openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Lee (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENJPA-2255) Couldn't load the referencedColumn definition when create the JoinTable
Date Fri, 31 Aug 2012 22:08:07 GMT

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

Albert Lee commented on OPENJPA-2255:
-------------------------------------

This problem only happens when 
* @JoinTable is specified in the entity.
* String type entity identity field
* database table is created with join column id with length other than the database specific
column length.

This problem also affects the Mapping tool creating database table operation, always assume
database defect VARCHAR/CHAR length define in the database dictionary.

Attached a patch for trunk. Please try if this has resolved your issue. 

For fix/commit for 2.2.x, 2.1.x and 2.0.x releases, you will need to work with IBM service
channel to get this fix in these releases.

Albert Lee.

                
> Couldn't load the referencedColumn definition when create the JoinTable
> -----------------------------------------------------------------------
>
>                 Key: OPENJPA-2255
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2255
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 2.1.1
>            Reporter: xiezhi
>            Priority: Minor
>              Labels: documentation, patch
>         Attachments: OPENJPA-2255.patch
>
>
> The JoinColumn couldn't have the referencedColumn's definition which includes the length
definition. and it's length  should be assigned to the default value 255. 
> @Entity 
> public class Student { 
>   @Id @Column(name="id", length=128, nullable=false) private String id; 
>   @Column(name="sName", length=255) private String sName; 
>   @ManyToMany 
>   @JoinTable( 
>     name="student_course_map", 
>     joinColumns={@JoinColumn(name="student_id", referencedColumnName="id", nullable=false)},

>     inverseJoinColumns={@JoinColumn(name="course_id", referencedColumnName="id", nullable=false)}

>   ) 
>   public Collection getCourses() 
>   ... 
> } 
> @Entity 
> public class Courses{ 
>   @Id @Column(name="id", length=128, nullable=false) private String id; 
>   @Column(name="cName", length=255) private String cName; 
>   ... 
> } 
> We can see the student id length has been defined to 128. And there is no definition
length in the JoinColumn student_id. The JoinColumn should be set to the default value 255.

> The warning message will occur like this 
> WARN  [Schema] Existing column "student_id" on table "test.student_course_map" is incompatible
with the same column in the given schema definition. Existing column: 
> Full Name: student_course_map.student_id 
> Type: varchar 
> Size: 128 
> Default: null 
> Not Null: true 
> Given column: 
> Full Name: student_course_map.student_id 
> Type: varchar 
> Size: 255 
> Default: null 
> Not Null: true 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message