Thanks for the report, investigating now....
On Tue, Dec 8, 2009 at 2:33 PM, Pierre Lavignotte <
[email protected]> wrote:
> Hi,
>
> I have a problem when I try to inherit a one-to-many relation ship
> from a base entity class.
>
> The following model works fine :
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
> public abstract class BaseEntity {
>
> @PrimaryKey
> @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> private Key key;
>
> public Key getKey() {
> return key;
> }
> }
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class Community extends BaseEntity {
>
> @Persistent
> @Element(dependent = "true")
> private List<SpeciesStats> stats = new ArrayList<SpeciesStats>();
>
> public List<SpeciesStats> getStats() {
> return stats;
> }
>
> @Persistent(dependent = "true")
> TackleBox tackleBox;
>
> public TackleBox getTackleBox() {
> return tackleBox;
> }
>
> public void setTackleBox(TackleBox tackleBox) {
> this.tackleBox = tackleBox;
> }
> }
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class TackleBox extends BaseEntity {
> /* some other properties that eventually extend BaseEntity and so on
> */
> }
>
> But if I move "private List<SpeciesStats> stats" from Community to
> BaseEntity, I get a runtime exception when trying to read a Community
> entity :
> Caused by: java.lang.NullPointerException
> at org.datanucleus.store.appengine.DatastoreTable.runCallBacks
> (DatastoreTable.java:1025)
> at org.datanucleus.store.appengine.DatastoreTable.initializeNonPK
> (DatastoreTable.java:391)
> at org.datanucleus.store.appengine.DatastoreTable.buildMapping
> (DatastoreTable.java:285)
> at org.datanucleus.store.appengine.DatastoreManager.buildStoreData
> (DatastoreManager.java:405)
> at org.datanucleus.store.appengine.DatastoreManager.newStoreData
> (DatastoreManager.java:363)
> at org.datanucleus.store.AbstractStoreManager.addClasses
> (AbstractStoreManager.java:788)
> at org.datanucleus.store.AbstractStoreManager.addClass
> (AbstractStoreManager.java:759)
> at org.datanucleus.store.mapped.MappedStoreManager.getDatastoreClass
> (MappedStoreManager.java:358)
> at
> org.datanucleus.store.appengine.DatastoreManager.getDatastoreClass
> (DatastoreManager.java:631)
> at
> org.datanucleus.store.appengine.query.DatastoreQuery.performExecute
> (DatastoreQuery.java:212)
> at org.datanucleus.store.appengine.query.JDOQLQuery.performExecute
> (JDOQLQuery.java:85)
> at org.datanucleus.store.query.Query.executeQuery(Query.java:1489)
> at org.datanucleus.store.query.Query.executeWithArray(Query.java:
> 1371)
> at org.datanucleus.store.query.Query.execute(Query.java:1344)
> at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:221)
>
> Or trying to persist one :
>
> java.lang.NullPointerException
> at org.datanucleus.store.appengine.DatastoreTable.runCallBacks
> (DatastoreTable.java:1025)
> at org.datanucleus.store.appengine.DatastoreTable.initializeNonPK
> (DatastoreTable.java:391)
> at org.datanucleus.store.appengine.DatastoreTable.buildMapping
> (DatastoreTable.java:285)
> at org.datanucleus.store.appengine.DatastoreManager.buildStoreData
> (DatastoreManager.java:405)
> at org.datanucleus.store.appengine.DatastoreManager.newStoreData
> (DatastoreManager.java:363)
> at org.datanucleus.store.AbstractStoreManager.addClasses
> (AbstractStoreManager.java:788)
> at org.datanucleus.store.AbstractStoreManager.addClass
> (AbstractStoreManager.java:759)
> at org.datanucleus.store.mapped.MappedStoreManager.getDatastoreClass
> (MappedStoreManager.java:358)
> at
> org.datanucleus.store.appengine.DatastoreManager.getDatastoreClass
> (DatastoreManager.java:631)
> at
> org.datanucleus.store.appengine.DatastoreFieldManager.buildMappingConsumer
> (DatastoreFieldManager.java:1008)
> at
> org.datanucleus.store.appengine.DatastoreFieldManager.buildMappingConsumer
> (DatastoreFieldManager.java:998)
> at org.datanucleus.store.appengine.DatastoreFieldManager.<init>
> (DatastoreFieldManager.java:133)
> at org.datanucleus.store.appengine.DatastoreFieldManager.<init>
> (DatastoreFieldManager.java:167)
> at
>
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPreProcess
> (DatastorePersistenceHandler.java:316)
> at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects
> (DatastorePersistenceHandler.java:236)
> at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
> (DatastorePersistenceHandler.java:225)
> at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
> (JDOStateManagerImpl.java:3185)
> at org.datanucleus.state.JDOStateManagerImpl.makePersistent
> (JDOStateManagerImpl.java:3161)
> at org.datanucleus.ObjectManagerImpl.persistObjectInternal
> (ObjectManagerImpl.java:1298)
> at org.datanucleus.ObjectManagerImpl.persistObject
> (ObjectManagerImpl.java:1175)
> at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
> (JDOPersistenceManager.java:669)
> at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
> (JDOPersistenceManager.java:694)
>
> Same thing if Community inherits from another class that have a
> List<SpeciesStats> properties, so Community is the only class that
> have this property.
>
> What's wrong ? Did I miss something with the anotations ?
>
> Thanks,
> Pierre
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.