openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fay Wang (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-1253) JoinColumn annotation not allowed in conjunction with *ToMany annotation
Date Tue, 15 Sep 2009 17:31:57 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-1253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12755596#action_12755596
] 

Fay Wang commented on OPENJPA-1253:
-----------------------------------

According to JPA 2.0 spec (Section 11.1.21), 

The table in which the JoinColumn annotion is found depends upon the context. 
(1) If the join is for a OneToOne or ManyToOne mapping using a foreign key mapping strategy,
the foreign key column is in the table of the source entity or embeddable. 

(2) If the join is for a unidirectional OneToMany mapping using a foreign key mapping strategy,
the foreign key is in the table of the target entity. 

(3) If the join is for a ManyToMany mapping or for a one-to-one or bidirectional 
ManyToOne/OneToMany mapping using a join table, the foreign key is in a join table. 

(4) If the join is for an element collection, the foreign key is in a collection table.

In comparison to the JPA 1.0 spec (Section 9.1.6):
The table in which it is found depends upon the context. 
(1) If the join is for a OneToOne or Many-ToOne mapping, the foreign key column is in the
table of the source entity. 

(2) If the join is for a ManyToMany, the foreign key is in a join table.

The JoinColumn annotation in v2.0 apparently becomes more flexible as it is allowed to  appear
for a OneToMany mapping. 

> JoinColumn annotation not allowed in conjunction with *ToMany annotation
> ------------------------------------------------------------------------
>
>                 Key: OPENJPA-1253
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1253
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 2.0.0-M1, 2.0.0-M2, 2.0.0-M3, 2.0.0-M4, 2.0.0
>            Reporter: Rick Curtis
>             Fix For: 2.0.0
>
>
> I receive the following exception if I have an Entity with a One(Many)ToMany relationship
with another Entity. 
> <openjpa-2.0.0-SNAPSHOT-r422266:805588 fatal user error> org.apache.openjpa.persistence.ArgumentException:
You have supplied columns for "....Entity", but this mapping cannot have columns in this context.
> To recreate the failure, add a @JoinColumn annotation to one of the *ToMany relationships
in org.apache.openjpa.persistence.jdbc.annotations.AnnoTest1. 
> example:
>     @MapKey(name = "basic")
>     @OneToMany(mappedBy = "oneManyOwner")
>     @JoinColumn(name = "asdf")
>     protected Map<String, AnnoTest2> inverseOwnerMapKey = new HashMap();
> Then run:
> trunk\openjpa-parent\openjpa-persistence-jdbc>mvn test -Dtest=org.apache.openjpa.persistence.jdbc.annotations.TestOneToMany

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message