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

Maria Jurcovicova commented on OPENJPA-2126:
--------------------------------------------

Since OPENJPA-2127 was very similar to this issue and has been closed as a 
duplicate, I will the relevant pieces from it here.

1.) The unidirectional one-to-many relationship with Map has similar join table 
name issue.
2.) Join table in an unidirectional one-to-many relationship with Map uses 
"element_id" as the name of the column with inverses. 




                
> Default join table column name in many-to-many relationship does not follow 
> JPA v2 specification
> ------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2126
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2126
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc, jpa
>    Affects Versions: 2.1.1
>            Reporter: Maria Jurcovicova
>            Priority: Minor
>
> According to JPA v2 specification page 48, the joining table should have two 
> columns. One column should have foreign key to owners table and the other 
> should have foreign key to the inverse table. 
> The name of the column referencing the owner should be:
> * the name of the relationship property or field of inverse entity ; 
> * underscore "_";
> * the name of the primary key column in owner table. 
> OpenJPA assumes that the name of  the column referencing the owner is:
> * owner entity name ; 
> * underscore "_";
> * the name of the primary key column in owner table. 
> The name of the column referencing the inverse is correct.
> Example entities:
> @Entity
> @Table(name="tblMtmOwner")
> public class MtmOwner {
>   @Id
>   private long id;
>   private String name;
>   @ManyToMany
>   private Collection<MtmInverse> inverses = new ArrayList<MtmInverse>();
> }
>  
> @Entity
> public class MtmInverse{
>   @Id
>   private long id;
>   @ManyToMany(mappedBy="inverses")
>   @MapKey(name="name")
>   private Map<String, MtmOwner> owners = new HashMap<String, MtmOwner>();
> }
> Expected column name: owners_id
> OpenJPA column name: mtmowner_id 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to