[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-494) Determine Referenced Entity For Embeddable types from the parameterised type
Paolo "Nusco" Perrotta (JIRA)
noreply at atlassian.com
Sun Dec 10 13:10:05 EST 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/ANN-494?page=comments#action_25603 ]
Paolo "Nusco" Perrotta commented on ANN-494:
--------------------------------------------
This might actually be easier than that. I found a bug deep into the reflection code. I'm working on it.
> 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
> Attachments: TestUnboundEntity.java
>
>
> 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.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list