[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-4712) Field named "id" (but not an @Id) in a class referenced via join table leads to "Column 'col_1_1_' not found" when retrieving old versions

Simon MacMullen (JIRA) noreply at atlassian.com
Thu Dec 17 10:57:31 EST 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=34975#action_34975 ] 

Simon MacMullen commented on HHH-4712:
--------------------------------------

Argh, formatting blew up. Sorry about that.

> Field named "id" (but not an @Id) in a class referenced via join table leads to "Column 'col_1_1_' not found" when retrieving old versions
> ------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-4712
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4712
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: envers
>    Affects Versions: 3.3.0.GA, 3.5.0-Beta-2
>            Reporter: Simon MacMullen
>            Priority: Minor
>         Attachments: envers-bug.tar.gz
>
>
> I have a child class referenced with a @OneToMany via a @JoinTable. This class has a field in it named "id", as well as a real @Id field called something else.
> Envers seems to treat the field specially because it's called "id", which seems wrong. It seems to get confused and ends up trying to pull a column from a ResultSet which did not exist in the appropriate query.
> I've attached a small test case. Run "mvn install" and the test case will throw an exception. Rename the field Child.id to anything else and "mvn install" will succeed.
> The pom in the test case references 3.3.2.GA and Envers 1.2.0.GA-hibernate-3.3, but I've tried with 3.5.0.Beta-2 and got exactly the same result.
> To save opening the tarball if you don't want to run it, the entity classes look like this:
> @Entity
> @Audited
> public class Parent {
>     @GeneratedValue(generator="sequence_generator")
>     @GenericGenerator(name="sequence_generator", strategy="org.hibernate.id.enhanced.SequenceStyleGenerator")
>     @Id
>     public int id = 0;
>     @OneToMany(cascade = CascadeType.ALL)
>     @JoinTable(name = "join_table",
>              joinColumns = @JoinColumn(name="parent_id"),
>              inverseJoinColumns = @JoinColumn(name="child_id"))
>     public List<Child> children;
> }
> @Entity
> @Audited
> public class Child {
>     @GeneratedValue(generator="sequence_generator")
>     @GenericGenerator(name="sequence_generator", strategy="org.hibernate.id.enhanced.SequenceStyleGenerator")
>     @Id
>     public int theRealId = 0;
>     // This is the problematic field - rename it to anything other than "id" and the test will pass.
>     public int id = 0;
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list