openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vásáry, Dániel <vas...@elgekko.net>
Subject Re: JoinColumn name not used in sql
Date Wed, 28 Apr 2010 15:16:44 GMT
Hi,
I had same problem (and other strange behaviour) when I used Eclipse plugin
based ByteCode enhancement.
Enhanced OpenJpa recognized for me foreign keys (in many-to-one
relationships) only when entity names followed each other in alphabetical
way.
For example Store -> StoreUri (which contains foreign key to Store) worked
fine, but
MetadataType -> MetadataElement not.

My problem solved with switching to Ant based enhancement implementation.
All problems gone.


2010/4/28 vld <knezevicvladimir@yahoo.com>

>
> Hi!
>
> I have a problem with mapping many-to-one relationship without exact
> foreign
> key constraint set in database. I use OpenJPA implementation with MySql
> database, but the problem is with generated sql scripts for insert and
> select statements.
>
> I have LegalEntity table which contains RootId column (among others). I
> also
> have Address table which has LegalEntityId column which is not nullable,
> and
> which should contain values referencing LegalEntity's "RootId" column, but
> without any database constraint (foreign key) set.
>
> Address entity is mapped:
> @Entity
> @Table(name="address")
> public class Address implements Serializable {
>    ...
>
>    @ManyToOne(fetch=FetchType.LAZY, optional=false)
>    @JoinColumn(referencedColumnName="RootId", name="LegalEntityId",
> nullable=false, insertable=true, updatable=true, table="LegalEntity")
>    public LegalEntity getLegalEntity() {
>        return this.legalEntity;
>    }
> }
>
> SELECT statement (when fetching LegalEntity's addresses) and INSERT
> statment
> are generated:
> - SELECT t0.Id, .., t0.LEGALENTITY_ID FROM address t0 WHERE
> t0.LEGALENTITY_ID = ? ORDER BY t0.Id DESC [params=(int) 2]
> - INSERT INTO address (..., LEGALENTITY_ID) VALUES (..., ?) [params=...,
> (int) 2]
>
> If I omit table attribute from mentioned statements are generated:
> - SELECT t0.Id, ... FROM address t0 INNER JOIN legalentity t1 ON
> t0.LegalEntityId = t1.RootId WHERE t1.Id = ? ORDER BY t0.Id DESC
> [params=(int) 2]
> - INSERT INTO address (...) VALUES (...) [params=...]
>
> So, LegalEntityId is not included in any of the statements.
>
> Is it possible to have relationship based on such referencing (to column
> other than primary key, without foreign key in database)? Is there
> something
> else missing?
>
> Thanks in advance.
> --
> View this message in context:
> http://openjpa.208410.n2.nabble.com/JoinColumn-name-not-used-in-sql-tp4974728p4974728.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message