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) <
maxr+appeng...@google.com <maxr%2bappeng...@google.com>> 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) <
> maxr+appeng...@google.com <maxr%2bappeng...@google.com>> wrote:
>
>> Thanks for the report, investigating now....
>>
>>
>> On Tue, Dec 8, 2009 at 2:33 PM, Pierre Lavignotte <
>> pierre.lavigno...@gmail.com> 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
>>> google-appengine-j...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
>>> .
>>> 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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to