[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6608?page=c...
]
Joeri Hendrickx commented on HHH-6608:
--------------------------------------
The embedded entity looks like this:
@Embeddable
public class EmbeddedEntity implements Serializable {
@ManyToOne
@JoinColumns({
@JoinColumn(name="test", referencedColumnName="testRef"),
@JoinColumn(name="test2", referencedColumnName="test2Ref")
})
private ReferencedEntity referencedEntity;
}
@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: 3.5.6, 4.0.0.CR1
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