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

Reply via email to