Hey,

I have 3 classes: Person, Car and Model.

Person has an ArrayList property defined:
List<Car> cars;

Car is an abstract class which class Model extends, I.e.

@PersistenceCapable
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class Car {

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  protected Key key;

  public Car() {
  }

}

Model extends Car:

@PersistenceCapable
public class Model extends Car {

  public Model() {
  }

}

I load a Person object and create a new Car object, I.e.

Person personObj = pm.getObjectById(Person.class, key);
Car newCar = new Model();

I then try to persist the new Car by adding it to the "cars" property
in the Person Class, I.e.

personObj.getCars().add(newCar);

However, when I try this App Engine throws the following exception:

java.lang.ArrayIndexOutOfBoundsException: 0
        at
org.datanucleus.store.mapped.scostore.FKListStore.<init>(FKListStore.java:
133)
        at
org.datanucleus.store.appengine.DatastoreFKListStore.<init>(DatastoreFKListStore.java:
41)
        at
org.datanucleus.store.appengine.DatastoreManager.newFKListStore(DatastoreManager.java:
528)
        at
org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForCollection(MappedStoreManager.java:
729)
        at
org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForField(MappedStoreManager.java:
646)
        at org.datanucleus.sco.backed.List.<init>(List.java:104)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at
com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:
112)
        at
com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:
120)
        at org.datanucleus.util.ClassUtils.newInstance(ClassUtils.java:94)
        at org.datanucleus.sco.SCOUtils.newSCOInstance(SCOUtils.java:164)
        at
org.datanucleus.store.mapped.mapping.AbstractContainerMapping.replaceFieldWithWrapper(AbstractContainerMapping.java:
426)
        at
org.datanucleus.store.mapped.mapping.CollectionMapping.postInsert(CollectionMapping.java:
165)
        at
org.datanucleus.store.appengine.DatastoreRelationFieldManager.runPostInsertMappingCallbacks(DatastoreRelationFieldManager.java:
217)
        at
org.datanucleus.store.appengine.DatastoreRelationFieldManager.access
$200(DatastoreRelationFieldManager.java:48)
        at org.datanucleus.store.appengine.DatastoreRelationFieldManager
$1.apply(DatastoreRelationFieldManager.java:116)
        at
org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations(DatastoreRelationFieldManager.java:
81)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(DatastoreFieldManager.java:
955)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(DatastorePersistenceHandler.java:
546)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess(DatastorePersistenceHandler.java:
304)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(DatastorePersistenceHandler.java:
256)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:
240)
        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:
1170)
        at
org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:
669)
        at
org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:
694)


This sounds much like a similar question that was raised here:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/adf298a9a5b4bd03

Has anyone else seen this issue before?

Thanks

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

Reply via email to