yes! amazing!

        @PersistentCollection(elementType=String.class)
        @Externalizer("User.rolesToStrings")
        @Factory("User.rolesFromStrings")
        private HashSet<Role> testRoles=new HashSet<Role>();

works exactly like I want it to...

except that it also has problems with the eager fetching which I don't 
quite understand. As a result I've resorted to sticking with my 
nativeQuery work around. The eager fetching error is attached for anyone 
who is really interested :


openjpa exception :
-------
Caused by: <openjpa-1.2.1-r752877:753278 nonfatal general error> 
org.apache.openjpa.persistence.PersistenceException: java.lang.String cannot be 
cast to 
org.apache.openjpa.enhance.PersistenceCapable
        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:875)
        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:982)
        at 
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
        at 
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2400)
        at 
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:272)
        at 
org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
        at 
org.apache.openjpa.datacache.QueryCacheStoreQuery$CachingResultObjectProvider.getResultObject(QueryCacheStoreQuery.java:597)
        at 
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
        at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1228)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775)
        at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:252)
        at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:294)
        ... 26 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to 
org.apache.openjpa.enhance.PersistenceCapable
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:408)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:380)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
        at 
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
        at 
org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:352)
        at 
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
        at 
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
        at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
        ... 59 more




On Tue, Mar 31, 2009 at 10:46:03AM -0500, Jody Grassel wrote:
> It sounds like you're trying to persist a collection of enumerations as a
> set of data and not as a reference to other entities, is that correct?
> 
> If so, wouldn't a combination of @PersistentCollection and Externalization
> (section 6.6 in the manual) provide the function you are looking for?
> 
> 
> On Wed, Mar 25, 2009 at 11:48 AM, Tedman Leung <ted...@sfu.ca> wrote:
> 
> > Anyone know how to store a collection of enums as Strings instead of their
> > ordinal values? (preferably with annotations...)
> >
> > i.e.
> >        @ManyToMany
> >        private Set<MyEnum> myEnums=new HashSet<MyEnum>();
> >
> >
> > --
> >                                                           Ted Leung
> >                                                           ted...@sfu.ca
> >
> > It's time for a new bike when the bulb in your shift light burns out.
> >

-- 
                                                           Ted Leung
                                                           ted...@sfu.ca

Being normal is vastly over rated.

Reply via email to