[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6608) @JoinColumns doesn't work inside an @Embedded member

Joeri Hendrickx (JIRA) noreply at atlassian.com
Thu Aug 25 11:40:04 EDT 2011


@JoinColumns doesn't work inside an @Embedded member
----------------------------------------------------

                 Key: HHH-6608
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6608
             Project: Hibernate Core
          Issue Type: Bug
          Components: annotations, metamodel
    Affects Versions: 4.0.0.CR1, 3.5.6
         Environment: Version 3.5.6 and up, no DB
            Reporter: Joeri Hendrickx
         Attachments: hibernate-embedded-joincolumns.zip

If you use multiple joincolumns on a @ManyToOne or @OneToOne field in an @Embedded class, hibernate will fail when building its metamodel with the following exception:

Exception in thread "main" org.hibernate.MappingException: property [_model_MainEntity_embeddedEntity.referencedEntity] not found on entity [model.ReferencedEntity]
	at org.hibernate.mapping.PersistentClass.getRecursiveProperty(PersistentClass.java:379)
	at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:406)
	at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:111)
	at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
	at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
	at model.Test.main(Test.java:12)
Caused by: org.hibernate.MappingException: property [_model_MainEntity_embeddedEntity.referencedEntity] not found on entity [model.ReferencedEntity]
	at org.hibernate.mapping.PersistentClass.getRecursiveProperty(PersistentClass.java:425)
	at org.hibernate.mapping.PersistentClass.getRecursiveProperty(PersistentClass.java:376)
	... 8 more

A test case is included. Just run model.  Test with the hibernate libraries in the classpath.

I get the impression this is because of the dot in the generated property name.  Hibernate generates a synthetic property, named after the FQN of the owning entity (with dots replaces by underscores) appended by and underscore and the name of the property.  But properties inside of embedded objects are represented with a dot; when Hibernate later tries to retrieve the same property, it incorrectly interprets this dot as a delimiter, and will look for `_model_MainEntity_embeddedEntity` (in the example above) instead; which it will not find.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list