I'm trying to save some data in my app, quite similar to almost all other data I've previously saved. However, I'm now getting this stack trace:
java.lang.ClassCastException: oid is not instanceof javax.jdo.identity.ObjectIdentity at com.resmark.client.model.RatePlan.jdoCopyKeyFieldsFromObjectId (RatePlan.java) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObjectAsValue (PersistenceCapableMapping.java:657) at org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.setObject (PersistenceCapableMapping.java:364) at org.datanucleus.store.appengine.DatastoreRelationFieldManager $1.setObjectViaMapping(DatastoreRelationFieldManager.java:132) at org.datanucleus.store.appengine.DatastoreRelationFieldManager $1.apply(DatastoreRelationFieldManager.java:108) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations (DatastoreRelationFieldManager.java:80) at org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations (DatastoreFieldManager.java:795) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess (DatastorePersistenceHandler.java:288) at org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects (DatastorePersistenceHandler.java:241) 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) at com.resmark.server.model.service.BaseDataService.create (BaseDataService.java:227) at com.resmark.server.SetupServiceImpl.updateOrCreate (SetupServiceImpl.java:120) at com.resmark.server.SetupServiceImpl.updateOrCreateBundle (SetupServiceImpl.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.development.agent.runtime.Runtime.invoke (Runtime.java:100) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC.java:527) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:166) at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost (RemoteServiceServlet.java:86) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1093) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter (TransactionCleanupFilter.java:43) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1084) at com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java:121) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle (DevAppEngineWebAppContext.java:54) at org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139) at com.google.appengine.tools.development.JettyContainerService $ApiProxyHandler.handle(JettyContainerService.java:342) at org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection$RequestHandler.content (HttpConnection.java:844) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:396) at org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442) I've seen this come up when a data model has a many-to-one relationship and a one-to-one relationship with the same data type, but I'm not doing that. here is the code referenced: @PersistenceCapable(identityType=IdentityType.APPLICATION) public class Bundle implements Serializable { @PrimaryKey @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private String name; @Persistent private Text description; @Persistent private RatePlan ratePlan; @Persistent private PricingModel pricingModel; @Persistent private List<BundledActivity> activities = new ArrayList<BundledActivity>(); .... } @PersistenceCapable(identityType=IdentityType.APPLICATION) public class RatePlan implements Serializable { @PrimaryKey @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) public Key id; @Persistent private String name; @Persistent private BigDecimal adultPrice; @Persistent private BigDecimal youthPrice; @Persistent private BigDecimal unitPrice; @Persistent private PricingModel pricingModel; @Persistent private boolean active = true; ..... } @PersistenceCapable(identityType=IdentityType.APPLICATION) public class BundledActivity implements Serializable { @PrimaryKey @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) private Key id; @Embedded @Persistent private ActivityFK activity; @Persistent private RatePlan ratePlan; @Persistent private int day; @Persistent @Extension(vendorName="datanucleus", key="gae.parent-pk", value="true") private Key bundleId; ..... } @PersistenceCapable(identityType=IdentityType.NONDURABLE) public class ActivityFK implements Serializable { @Persistent private Key key; @Persistent private String name; @Persistent private PricingModel pricingModel; .... } public enum PricingModel implements Serializable { PER_GUEST, PER_UNIT, BOTH; } perhaps there's something I'm missing about the model. I've done almost the same thing in most of my other data model objects and their relationships. I think about the only thing that's different here is the @Extension annotation, but that's not where the error is happening. Any suggestions would be very welcome. Thanks! -bryce -- 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.