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.

Reply via email to