This sounds like it could be the issue, I'll go ahead and upgrade to the latest SDK tonight and see how I get on.
Thanks Rolf On Aug 8, 10:44 am, Rolf Aden <mail.rolf.a...@googlemail.com> wrote: > It seems you are not using the latest sdk version (be something pre > 1.5.1?). > As of release 1.5.1 polymorphic relationships are supported for the > default inheritance strategy in JDO (new-table for the base class, and > superclass-table for all subclasses) and JPA SingleTable. You may want > to change Car to > > @PersistenceCapable > @Discriminator(column = "DISCRIMINATOR") > public abstract class Car { > .... > > } > > and keep Model > > @PersistenceCapable > public class Model extends Car { > ... > > } > > Rolf > > On 8 Aug., 01:35, mscwd01 <mscw...@gmail.com> wrote: > > > > > > > > > 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>(DatastoreFKList > > Store.java: > > 41) > > at > > org.datanucleus.store.appengine.DatastoreManager.newFKListStore(DatastoreMa > > nager.java: > > 528) > > at > > org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForCollectio > > n(MappedStoreManager.java: > > 729) > > at > > org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForField(Map > > pedStoreManager.java: > > 646) > > at org.datanucleus.sco.backed.List.<init>(List.java:104) > > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > > Method) > > at > > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcce > > ssorImpl.java: > > 39) > > at > > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstru > > ctorAccessorImpl.java: > > 27) > > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > > at > > com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(R > > untime.java: > > 112) > > at > > com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Ru > > ntime.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.replaceFieldW > > ithWrapper(AbstractContainerMapping.java: > > 426) > > at > > org.datanucleus.store.mapped.mapping.CollectionMapping.postInsert(Collectio > > nMapping.java: > > 165) > > at > > org.datanucleus.store.appengine.DatastoreRelationFieldManager.runPostInsert > > MappingCallbacks(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.storeRelation > > s(DatastoreRelationFieldManager.java: > > 81) > > at > > org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(Datast > > oreFieldManager.java: > > 955) > > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations( > > DatastorePersistenceHandler.java: > > 546) > > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProce > > ss(DatastorePersistenceHandler.java: > > 304) > > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(D > > atastorePersistenceHandler.java: > > 256) > > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(Da > > tastorePersistenceHandler.java: > > 240) > > at > > org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateMa > > nagerImpl.java: > > 3185) > > at > > org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImp > > l.java: > > 3161) > > at > > org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.j > > ava: > > 1298) > > at > > org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java: > > 1170) > > at > > org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceM > > anager.java: > > 669) > > at > > org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceMana > > ger.java: > > 694) > > > This sounds much like a similar question that was raised > > here:http://groups.google.com/group/google-appengine-java/browse_thread/th... > > > 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 google-appengine-java@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.