[appengine-java] Re: Bulk update throws exception
Hi Anita. I don't understand your data model -- if you are modeling the relationship between entities of type A and entities of type B using entities of type C, why do entities of type A have direct references to entities of type B and vice versa? Either way, the reason you're getting this error is because you're inadvertently attempting to set an owned relationship between entities of types A and B under type C, and doing this tries to modify the keys of types A and B after they've been persisted, which you can't do. Try changing the following: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class TableC implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private Key tablea; @Persistent private Key tableb; . This should just store a reference to the entity's key (unowned relationship) rather than trying to modify the keys of the A and B entities. - Jason On Tue, Sep 15, 2009 at 1:34 AM, Anita an...@ensarm.com wrote: Hi Jason, I could solve my previous problem. But now i am facing some other problem with many to many relationship tables. My schema looks as follows: TableA --- TableC - TableB which means there is many to many relationship between TableA TableB. So i want TableA and TableB primary keys into TableC as foreign key. TableA class looks as follows: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class TableA implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; .. @Persistent(defaultFetchGroup=true) private SetKey tableB = new HashSetKey(); .. (some getter setter) TableB class looks as follows: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class TableB implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; .. @Persistent(defaultFetchGroup=true) private SetKey tableA = new HashSetKey(); .. (some getter setter) TableC class looks as follows: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class TableC implements Serializable{ @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id; @Persistent private TableA tablea; @Persistent private TableB tableb; . (some getter setter) While adding data into TableC i use following code: Query query1 = pm.newQuery(TableA.class); ListTableA results1 = (ListTableA) query1.execute(); TableA tableA= results1.get(0); Query query2 = pm.newQuery(TableB.class); ListTableB results2 = (ListTableB) query2.execute(); TableB tableB= results2.get(0); tableA.add(tableB); tableB.add(tableA); At this point TableA and TableB values are getting update but while entering data into TableC the problem comes. TableC tableC = new TableC(); tableC.setTableA(tableA); tableC.setTableB(tableB); pm.makePersistent(tableC); -- at this point it gives me A parent cannot be established or changed once an object has been persisted. Can you please tell me were i am going wrong? Thanks Anita On Sep 15, 3:54 am, Jason (Google) apija...@google.com wrote: From the error message, it sounds like the parent isn't getting set correctly. You'll need to share some of your code in order for me to help you further -- what does your Release class look like and how are you persisting it? - Jason On Sat, Sep 12, 2009 at 4:36 AM, Anita an...@ensarm.com wrote: Hi Jason, Our schema looks as follows: ProductType 1-M Product 1M Release Data is inserting into Release table. But while fetching data from release table i am getting following exception: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? org.datanucleus.exceptions.NucleusUserException: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? at org.datanucleus.store.appengine.DatastoreRelationFieldManager.lookupParent (DatastoreRelationFieldManager.java:302) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.fetchRelationField (DatastoreRelationFieldManager.java:289) at org.datanucleus.store.appengine.DatastoreFieldManager.fetchObjectField (DatastoreFieldManager.java:271) at
[appengine-java] Re: Bulk update throws exception
From the error message, it sounds like the parent isn't getting set correctly. You'll need to share some of your code in order for me to help you further -- what does your Release class look like and how are you persisting it? - Jason On Sat, Sep 12, 2009 at 4:36 AM, Anita an...@ensarm.com wrote: Hi Jason, Our schema looks as follows: ProductType 1-M Product 1M Release Data is inserting into Release table. But while fetching data from release table i am getting following exception: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? org.datanucleus.exceptions.NucleusUserException: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? at org.datanucleus.store.appengine.DatastoreRelationFieldManager.lookupParent (DatastoreRelationFieldManager.java:302) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.fetchRelationField (DatastoreRelationFieldManager.java:289) at org.datanucleus.store.appengine.DatastoreFieldManager.fetchObjectField (DatastoreFieldManager.java:271) at org.datanucleus.state.AbstractStateManager.replacingObjectField (AbstractStateManager.java:1197) at com.ensarm.server.domain.Release.jdoReplaceField(Release.java) at com.ensarm.server.domain.Release.jdoReplaceFields(Release.java) at org.datanucleus.state.JDOStateManagerImpl.replaceFields (JDOStateManagerImpl.java:2772) at org.datanucleus.state.JDOStateManagerImpl.replaceFields (JDOStateManagerImpl.java:2791) at org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject (DatastorePersistenceHandler.java:349) at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo (DatastoreQuery.java:384) at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo (DatastoreQuery.java:345) at org.datanucleus.store.appengine.query.DatastoreQuery.access$700 (DatastoreQuery.java:96) at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply (DatastoreQuery.java:454) at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply (DatastoreQuery.java:453) at org.datanucleus.store.appengine.query.StreamingQueryResult.resolveNext (StreamingQueryResult.java:137) at org.datanucleus.store.appengine.query.StreamingQueryResult $1.computeNext(StreamingQueryResult.java:163) at org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext (AbstractIterator.java:132) at org.datanucleus.store.appengine.query.AbstractIterator.hasNext (AbstractIterator.java:127) at org.datanucleus.store.appengine.query.StreamingQueryResult $AbstractListIterator.hasNext(StreamingQueryResult.java:229) at com.ensarm.server.servlet.GetData.getRelease(GetData.java:87) at com.ensarm.server.servlet.GetData.doGet(GetData.java:32) 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 com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java:124) 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:313) at
[appengine-java] Re: Bulk update throws exception
nope you are right ... it's not useless ... apologies I *think* the problem is in mapping (conceptually) from a mental RDBMS model to a GAE DS model ... where entity group might be mistaken for table ... :) On Aug 26, 3:02 pm, Jason (Google) apija...@google.com wrote: Why do you indicate that the documentation is useless? The links I included above state this quite clearly: two entities will be in separate entity groups by default, even if they're the same kind. Entity groups DO NOT collect entities of the same kind. If you need transaction support, you'll need to explicitly set one entity as the parent of the other, which basically creates a hierarchy (tree) of entities -- this is an entity group. In JDO/JPA, you do this using owned relationships which is covered in my second link above. - Jason On Tue, Aug 25, 2009 at 2:33 PM, Larry Cable larry.ca...@gmail.com wrote: I have exactly the same problem, I instantiate a number of @Entity objects (all of the same type) persist them, and flush them in the context of the same transaction. Since they are all of the same type, and their are no relationships (although there is an @Embedded class/field) I would imagine that they are all modelled as being in the same entity group .. but apparently not. The documentation is basically useless at this point ... On Aug 15, 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
[appengine-java] Re: Bulk update throws exception
Hi Jason, Our schema looks as follows: ProductType 1-M Product 1M Release Data is inserting into Release table. But while fetching data from release table i am getting following exception: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? org.datanucleus.exceptions.NucleusUserException: Field com.ensarm.server.domain.Release.products should be able to provide a reference to its parent but the entity does not have a parent. Did you perhaps try to establish an instance of com.ensarm.server.domain.Release as the child of an instance of com.ensarm.server.domain.Products after the child had already been persisted? at org.datanucleus.store.appengine.DatastoreRelationFieldManager.lookupParent (DatastoreRelationFieldManager.java:302) at org.datanucleus.store.appengine.DatastoreRelationFieldManager.fetchRelationField (DatastoreRelationFieldManager.java:289) at org.datanucleus.store.appengine.DatastoreFieldManager.fetchObjectField (DatastoreFieldManager.java:271) at org.datanucleus.state.AbstractStateManager.replacingObjectField (AbstractStateManager.java:1197) at com.ensarm.server.domain.Release.jdoReplaceField(Release.java) at com.ensarm.server.domain.Release.jdoReplaceFields(Release.java) at org.datanucleus.state.JDOStateManagerImpl.replaceFields (JDOStateManagerImpl.java:2772) at org.datanucleus.state.JDOStateManagerImpl.replaceFields (JDOStateManagerImpl.java:2791) at org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject (DatastorePersistenceHandler.java:349) at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo (DatastoreQuery.java:384) at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo (DatastoreQuery.java:345) at org.datanucleus.store.appengine.query.DatastoreQuery.access$700 (DatastoreQuery.java:96) at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply (DatastoreQuery.java:454) at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply (DatastoreQuery.java:453) at org.datanucleus.store.appengine.query.StreamingQueryResult.resolveNext (StreamingQueryResult.java:137) at org.datanucleus.store.appengine.query.StreamingQueryResult $1.computeNext(StreamingQueryResult.java:163) at org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext (AbstractIterator.java:132) at org.datanucleus.store.appengine.query.AbstractIterator.hasNext (AbstractIterator.java:127) at org.datanucleus.store.appengine.query.StreamingQueryResult $AbstractListIterator.hasNext(StreamingQueryResult.java:229) at com.ensarm.server.servlet.GetData.getRelease(GetData.java:87) at com.ensarm.server.servlet.GetData.doGet(GetData.java:32) 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 com.google.appengine.tools.development.StaticFileFilter.doFilter (StaticFileFilter.java:124) 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:313) 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
[appengine-java] Re: Bulk update throws exception
I have exactly the same problem, I instantiate a number of @Entity objects (all of the same type) persist them, and flush them in the context of the same transaction. Since they are all of the same type, and their are no relationships (although there is an @Embedded class/field) I would imagine that they are all modelled as being in the same entity group .. but apparently not. The documentation is basically useless at this point ... On Aug 15, 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
[appengine-java] Re: Bulk update throws exception
h' ... so it would seem that 2 or more entity (instances) persisted in the same tx cause this error ... this cannot be so ... how is the mapping from instance to entity (group) made? On Aug 25, 2:33 pm, Larry Cable larry.ca...@gmail.com wrote: I have exactly the same problem, I instantiate a number of @Entity objects (all of the same type) persist them, and flush them in the context of the same transaction. Since they are all of the same type, and their are no relationships (although there is an @Embedded class/field) I would imagine that they are all modelled as being in the sameentitygroup.. but apparently not. The documentation is basically useless at this point ... On Aug 15, 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 differententitygroups in the same transaction but I guess I don't quite understand what anentity groupis and how I go about making all entities part of the samegroupI 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