no one has any ideas on this? I'd really like to know if this is just a bug that will be resolved (in which case I'll continue to use this data model) or if there is a flaw in my data model/JDO usage.
thanks! -bryce On Nov 30, 1:21 am, bcottam <bcot...@gmail.com> wrote: > 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.