Have you read the documentation on entity groups?
http://code.google.com/appengine/docs/python/datastore/keysandentitygroups.html#Entity_Groups_Ancestors_and_Paths
http://code.google.com/appengine/docs/java/datastore/relationships.html

In JDO/JPA, entity groups are expressed using owned relationships between
entities -- in JPA, this would be annotated using @OneToOne, @OneToMany, and
so forth. If you have any specific questions after reading through the docs
on entity groups and relationships, let me know.

- Jason

On Sat, Aug 15, 2009 at 1:09 PM, Foreigner <foreigne...@gmail.com> wrote:

> While trying to do a bulk update on my entities using JPA I get the
> exception bellow.
> I understand that you can't do a bulk update on different entity groups in
> the same transaction but I guess I don't quite understand what an entity
> group is and how I go about making all entities part of the same group I
> want.
>
> Thanks for the help.
>
> fbr
>
> Illegal argument
> org.datanucleus.exceptions.NucleusUserException: Illegal argument
>       at 
> org.datanucleus.store.appengine.DatastoreExceptionTranslator.wrapIllegalArgumentException(DatastoreExceptionTranslator.java:42)
>
>       at 
> org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.put(RuntimeExceptionWrappingDatastoreService.java:106)
>       at 
> org.datanucleus.store.appengine.DatastorePersistenceHandler.put(DatastorePersistenceHandler.java:125)
>
>       at 
> org.datanucleus.store.appengine.DatastorePersistenceHandler.put(DatastorePersistenceHandler.java:94)
>       at 
> org.datanucleus.store.appengine.DatastorePersistenceHandler.updateObject(DatastorePersistenceHandler.java:398)
>
>       at 
> org.datanucleus.state.JDOStateManagerImpl.flush(JDOStateManagerImpl.java:4458)
>       at 
> org.datanucleus.ObjectManagerImpl.flushInternal(ObjectManagerImpl.java:2807)
>       at 
> org.datanucleus.ObjectManagerImpl.markDirty(ObjectManagerImpl.java:2617)
>
>       at 
> org.datanucleus.state.JDOStateManagerImpl.postWriteField(JDOStateManagerImpl.java:4241)
>       at 
> org.datanucleus.state.JDOStateManagerImpl.setObjectField(JDOStateManagerImpl.java:2287)
>       at 
> com.yicook.entities.TwitterDailyTip.jdoSetlastSet(TwitterDailyTip.java)
>
>       at 
> com.yicook.entities.TwitterDailyTip.setLastSet(TwitterDailyTip.java:36)
>       at 
> com.yicook.control.bco.TwitterStatusSetterBCO.resetTDT(TwitterStatusSetterBCO.java:60)
>       at 
> com.yicook.control.bco.TwitterStatusSetterBCO.execute(TwitterStatusSetterBCO.java:40)
>
>       at 
> com.yicook.control.ApplicationController.executeControllers(ApplicationController.java:61)
>       at 
> com.yicook.control.ApplicationController.dispatch(ApplicationController.java:41)
>       at com.yicook.servlets.FrontController.doPost(FrontController.java:31)
>
>       at com.yicook.servlets.FrontController.doGet(FrontController.java:25)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
>       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 
> 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:306)
>       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.headerComplete(HttpConnection.java:830)
>
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
>       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)
> Caused by: java.lang.IllegalArgumentException: can't operate on multiple 
> entity groups in a single transaction. found both Element {
>
>   type: "TwitterDailyTip"
>   id: 77
> }
>  and Element {
>   type: "TwitterDailyTip"
>   id: 78
> }
>
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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