Found and fixed the issue: http://code.google.com/p/datanucleus-appengine/issues/detail?id=171
On Wed, Dec 9, 2009 at 11:48 AM, Max Ross (Google) < [email protected] <maxr%[email protected]>> wrote: > Could you please post all the model objects that are involved in the > example? Looks like SpeciesStats is missing. Also, it would be great if > you could post the code that shows how you populate the Community object > before persisting. > > Thanks, > Max > > > On Wed, Dec 9, 2009 at 11:40 AM, Max Ross (Google) < > [email protected] <maxr%[email protected]>> wrote: > >> 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.
