[
http://opensource.atlassian.com/projects/hibernate/browse/ANN-494?page=all ]
Emmanuel Bernard reassigned ANN-494:
------------------------------------
Assign To: Paolo "Nusco" Perrotta
Paolo, do you think you'll have time?
Determine Referenced Entity For Embeddable types from the
parameterised type
----------------------------------------------------------------------------
Key: ANN-494
URL:
http://opensource.atlassian.com/projects/hibernate/browse/ANN-494
Project: Hibernate Annotations
Type: Improvement
Components: binder
Versions: 3.2.0.cr1
Reporter: Edward Costello
Assignee: Paolo "Nusco" Perrotta
When a collection is mapped using @ManyToOne or @CollectionOfElements, the entity in the
collection is derived from the parametrised type of the collection. e.g. there is no need
to explicitly indicate the elements of the following collection are books.
@ManyToOne
Set<Book> books;
It would be nice if the same kind of discovery could be applied to Embeddable types when
contained in a CollectionOfElements. E.g. it would be nice if Hibernate could derive that
the embedded Versioned references a Book in the example below
@CollectionOfElements
Set<Versioned<Book>>;
@Embeddable
class Versioned<T> {
T rightSide;
Date date;
}
Even if it wasn't derived, it would be good to be able to specify it. Currently the
only way to make the above work is to create a subclass of Versioned that explicitly binds
the type parameter to Book. Without this the below exception is thrown while building the
session factory
Exception in thread "main" java.lang.IllegalStateException: Property rightSide
has an unbound type and no explicit target entity.
at org.hibernate.cfg.AnnotationBinder.addElementsOfAClass(AnnotationBinder.java:946)
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:1655)
at
org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1054)
at
org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:543)
at
org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:484)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.annotations.CollectionBinder.bind(CollectionBinder.java:377)
at
org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1476)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:706)
at
org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452)
at
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira