[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