Hello,
I can confirm this is due to the fact that you store Fichero lists in
both the Service class and the Version class.
I posted my results about this issue here:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/156d5826fac5d5bc/75521bbea58ce7b6?lnk=gst&q=objectIdentity#75521bbea58ce7b6

No answer unfortunately.
I had to modify my model completely to fit my new business needs and
perform a data model transformation to change the data I had.

If you can, you can switch to unowned relationships (i.e. store
Fichero keys), or serialize the Fichero lists if you don't need to
query on them.
These solutions should work, but obviously it's up to you to see if
you can manage them.

regards
Lorenzo

On Nov 22, 6:22 pm, Frankeke <[email protected]> wrote:
> Hi, i´m trying to save some date in my GAE app but this error appear
> when I do de makePersistant of my object.
>
> at the end of this mail you can see that in Service Class there are
> one-to-one and 2 one-to-many relationships,.
>
> the error Stack is:
>
> java.lang.ClassCastException: oid is not instanceof
> javax.jdo.identity.ObjectIdentity
>         at dominio.Fichero.jdoCopyKeyFieldsFromObjectId(Fichero.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:136)
>         at org.datanucleus.store.appengine.DatastoreRelationFieldManager
> $1.apply(DatastoreRelationFieldManager.java:112)
>         at
> org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations(DatastoreRelationFieldManager.java:
> 81)
>         at
> org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(DatastoreFieldManager.java:
> 955)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(DatastorePersistenceHandler.java:
> 546)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess(DatastorePersistenceHandler.java:
> 304)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(DatastorePersistenceHandler.java:
> 256)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:
> 240)
>         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 org.apache.jsp.test_jsp._jspService(test_jsp.java:114)
>         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>         at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
> 324)
>         at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
> 292)
>         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
>         at com.google.appengine.tools.development.PrivilegedJspServlet.access
> $101(PrivilegedJspServlet.java:23)
>         at com.google.appengine.tools.development.PrivilegedJspServlet
> $2.run(PrivilegedJspServlet.java:59)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
> com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:
> 57)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> 511)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1166)
>         at
> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:
> 389)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
> 58)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
> 43)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
> 122)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 388)
>         at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> 216)
>         at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> 182)
>         at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> 765)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 418)
>         at
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
> 70)
>         at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>         at com.google.appengine.tools.development.JettyContainerService
> $ApiProxyHandler.handle(JettyContainerService.java:349)
>         at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>         at org.mortbay.jetty.Server.handle(Server.java:326)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> 542)
>         at org.mortbay.jetty.HttpConnection
> $RequestHandler.headerComplete(HttpConnection.java:923)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>         at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
> 409)
>         at org.mortbay.thread.QueuedThreadPool
> $PoolThread.run(QueuedThreadPool.java:582)
>
> My class are:
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION,
> detachable="true")
> public class Service implements Serializable {
>
>         /*Attributes*/
>
>                 private static final long serialVersionUID = 
> -5844108264018094806L;
>                 @PrimaryKey
>                 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>                 private Long id;
>                 @Persistent
>                 private long code;
>                 @Persistent
>                 private String name;
>                 @Persistent
>                 private boolean active;
>                 @Persistent
>                 private String stateDescription;
>
>         /*Relationship Attributes*/
>
>                 @Persistent
>                 private Owner owner;
>                 @Persistent
>                 private Company company;
>                 @Element(dependent = "true")
>                 private List<Version> versions;
>                 @Persistent
>                 private Fichero iconFile;
>
>                 ......
>
> }
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION,
> detachable="true")
> public class Fichero implements Serializable {
>
>         private static final long serialVersionUID = -4568341150599424882L;
>         @PrimaryKey
>         @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>         private Key key;
>         @Persistent
>         private String fileName;
>         @Persistent
>         private Blob fileBlob;
>         @Persistent
>         private String type;
>
>         ...
>
> }
>
> public class Owner implements Serializable {
>
>         /*Attributes*/
>
>                 private static final long serialVersionUID = 
> 7116085479178295467L;
>                 @PrimaryKey
>                 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>                 private Key key;
>                 @Persistent
>                 private String company;
>                ....
>
> }
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION,
> detachable="true")
> public class Version implements Serializable{
>
>         /*Attributes*/
>
>         private static final long serialVersionUID = 1900978533549089256L;
>
>         @PrimaryKey
>         @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>         private Key key;
>
>         /*Relationships Attributes*/
>
>         @Persistent
>         private Fichero zipFile;
>
>         @Persistent
>         private Fichero xmlModified;
>
>         @Element(dependent = "true")
>         private List<Fichero> recursos;
>
>         @Persistent
>         private XMLObject xmlObject;
>    .....
>
> }
>
> The problem is with Fichero Class as you can see in the error Stack.
> As you can see, in Service Class there are one-to-one and 2 one-to-
> many relationships, I think this is the problem but, how can I do it??

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to