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.


Reply via email to