[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2336) UserCollectionType: add support for ParameterizedTypes and typedef'ed types to the collection-type attribute for a collection mapping

Holger Brands (JIRA) noreply at atlassian.com
Thu Apr 19 14:36:04 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_26773 ] 

Holger Brands commented on HHH-2336:
------------------------------------

any chance to get this one reviewed and fixed sometime soon?
Thanks.

> UserCollectionType: add support for ParameterizedTypes and typedef'ed types to the collection-type attribute for a collection mapping
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-2336
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2336
>             Project: Hibernate3
>          Issue Type: Patch
>          Components: core
>    Affects Versions: 3.2.1
>         Environment: Hibernate 3.2.1, independent of database platform
>            Reporter: Holger Brands
>         Attachments: bug2336.patch, usercollectionwithparameters.zip
>
>
> Currently, it's required to specify a class name as value for the collection-type attribute of a collection mapping.
> Therefore you can't use a typedef'ed type as collection-type and consequently you can't pass parameters to a custom collection type.
> Please enhance the support for custom collection types such that you can do something like this:
> <typedef name="MyEventListType" class="ca.odell.glazedlists.hibernate.EventListType">
>         <param name="category">Test</param>
> </typedef>
> <class name="User" table="`USERS`">
>         <id name="userName" column="USERNAME"/>
>         <!-- mapping a value collection -->
>         <list name="nickNames" table="USER_NICKNAMES"
>             collection-type="MyEventListType">
>             <key column="USER_ID"/>
>             <list-index column="DISPLAY_ORDER"/>
>             <element column="NAME" type="string" length="50"/>
>         </list>       
> </class>
> Currently this mapping fails with this exception:
> org.hibernate.MappingException: user colllection type class not found: MyEventListType
>    at org.hibernate.type.TypeFactory.customCollection(TypeFactory.java:267)
>    at org.hibernate.mapping.Collection.getCollectionType(Collection.java:348)
>    at org.hibernate.mapping.Collection.getType(Collection.java:340)
>    at org.hibernate.tuple.PropertyFactory.buildStandardProperty(PropertyFactory.java:120)
>    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:163)
>    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:425)
>    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
>    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
>    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
>    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291)
>    at ca.odell.glazedlists.hibernate.AbstractHibernateTestCase.buildSessionFactory(AbstractHibernateTestCase.java:133)
>    at ca.odell.glazedlists.hibernate.AbstractHibernateTestCase.setUp(AbstractHibernateTestCase.java:167)
>    at junit.framework.TestCase.runBare(TestCase.java:125)
>    at junit.framework.TestResult$1.protect(TestResult.java:106)
>    at junit.framework.TestResult.runProtected(TestResult.java:124)
>    at junit.framework.TestResult.run(TestResult.java:109)
>    at junit.framework.TestCase.run(TestCase.java:118)
>    at junit.framework.TestSuite.runTest(TestSuite.java:208)
>    at junit.framework.TestSuite.run(TestSuite.java:203)
>    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
>    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.lang.ClassNotFoundException: MyEventListType
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>    at java.lang.Class.forName0(Native Method)
>    at java.lang.Class.forName(Class.java:164)
>    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
>    at org.hibernate.type.TypeFactory.customCollection(TypeFactory.java:264)
>    ... 24 more
> Also see the coresponding forum entry for details:
> http://forum.hibernate.org/viewtopic.php?t=969043
> Attached is a test case that demonstrates this problem.
> It's a modified copy of the existing "usercollection" test case in the Hibernate 3.2.1 distribution.
> Just copy the directory into your org.hibernate.test directory and include it in your testsuite.
> As I'm not familiar enough with the internals of Hibernate, I have no patch at hand, sorry.
> Resolving this issue would enhance mapping flexibility for custom collection types because you
> would be able to pass parameters as it's possible right now for UserTypes and CompositeUserTypes.

-- 
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