If I'm reading your logs correctly, you should be able to add both entities since you're supposedly not operating inside of a transaction. Can you post your full test code?
- Jason On Tue, Aug 25, 2009 at 3:50 AM, eddyd <[email protected]> wrote: > > This happens on the development server, using JPA. In the request > there are: > > 1. transaction.begin; run query; transaction.commit; log > (transaction.isActive) > 2. (w/o transaction) delete entry; log(transaction.isActive) > 3. (w/o transaction) add entry; log(transaction.isActive) > 4. (w/o transaction) add entry; log(transaction.isActive) > 5. log(transaction.isActive); close connection (i.e. close > entityManager) > > And "close connection" fails, because it tries to commit a > transaction, which fails because there are two entities in different > entity groups - see the messages bellow. And at any point the logs > show "transaction.isActive::false". > My question - why at "close connection" does it try to commit, if > there is no active transaction?? > > ============== > Aug 25, 2009 9:56:50 AM > com.mound.flexiview.fvstory.StoryEntryRepositoryJPA list > Entries > INFO: story::listEntries::transaction.isActive::false > Aug 25, 2009 9:56:50 AM > com.mound.flexiview.fvstory.StoryEntryRepositoryJPA dele > teEntries > INFO: story::deleteEntries::transaction.isActive::false > Aug 25, 2009 9:56:50 AM > com.mound.flexiview.fvstory.StoryEntryRepositoryJPA addE > ntry > INFO: story::addEntry::transaction.isActive::false > Aug 25, 2009 9:56:50 AM > com.mound.flexiview.fvstory.StoryEntryRepositoryJPA addE > ntry > INFO: story::addEntry::transaction.isActive::false > Aug 25, 2009 9:56:50 AM com.mound.flexiview.db.DBManagerJPA > closeConnection > INFO: closeConnection::transaction.isActive::false > Aug 25, 2009 9:56:50 AM com.mound.flexiview.db.DBManagerJPA > closeConnection > WARNING: closeConnection failed (close):: > javax.persistence.PersistenceException: Illegal argument > at > org.datanucleus.jpa.NucleusJPAHelper.getJPAExceptionForJDOException(N > ucleusJPAHelper.java:214) > at org.datanucleus.jpa.EntityManagerImpl.close > (EntityManagerImpl.java:15 > 7) > at > org.datanucleus.store.appengine.jpa.DatastoreEntityManager.close(Data > storeEntityManager.java:54) > at com.mound.flexiview.db.DBManagerJPA.closeConnection(Unknown > Source) > at com.mound.flexiview.db.DBPhaseListener.afterPhase(Unknown > Source) > at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java: > 179) > at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:103) > > ........... > > Caused by: java.lang.IllegalArgumentException: can't operate on > multiple entity > groups in a single transaction. found both > com.google.appengine.api.datastore.de > v.localdatastoreservice$profile$entitygr...@1bd427 and > com.google.appengine.api. > datastore.dev.localdatastoreservice$profile$entitygr...@1054f93 > at > com.google.appengine.api.datastore.DatastoreApiHelper.translateError( > DatastoreApiHelper.java:29) > at > com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(Da > tastoreApiHelper.java:56) > at com.google.appengine.api.datastore.DatastoreServiceImpl > $2.run(Datasto > reServiceImpl.java:169) > at > com.google.appengine.api.datastore.TransactionRunner.runInTransaction > (TransactionRunner.java:30) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (Datastore > ServiceImpl.java:157) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (Datastore > ServiceImpl.java:137) > at com.google.appengine.api.datastore.DatastoreServiceImpl.put > (Datastore > ServiceImpl.java:133) > at > org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreServ > ice.put(RuntimeExceptionWrappingDatastoreService.java:104) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.put(Datas > torePersistenceHandler.java:125) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.put(Datas > torePersistenceHandler.java:94) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObj > ect(DatastorePersistenceHandler.java:195) > at > org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOS > tateManagerImpl.java:3185) > at org.datanucleus.state.JDOStateManagerImpl.flush > (JDOStateManagerImpl.j > ava:4513) > at org.datanucleus.ObjectManagerImpl.flushInternal > (ObjectManagerImpl.jav > a:2814) > at org.datanucleus.ObjectManagerImpl.flush > (ObjectManagerImpl.java:2754) > at org.datanucleus.ObjectManagerImpl.preCommit > (ObjectManagerImpl.java:28 > 93) > at org.datanucleus.TransactionImpl.internalPreCommit > (TransactionImpl.jav > a:369) > at org.datanucleus.TransactionImpl.commit(TransactionImpl.java: > 256) > at org.datanucleus.ObjectManagerImpl.close > (ObjectManagerImpl.java:801) > at org.datanucleus.jdo.JDOPersistenceManager.close > (JDOPersistenceManager > .java:271) > at org.datanucleus.jpa.EntityManagerImpl.close > (EntityManagerImpl.java:15 > 3) > > ............ > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
