1

GWT でいくつかのエンティティを更新した後、それらを保存したいと思います。ただし、それらを永続化しようとすると、AppEngine 管理インターフェイスを見ると保存されません。ブール値は変更されていません。

コード

    EntityManager em = EMF.get().createEntityManager();
    for (OnixUser s: admin) {
        log.info(s.email + ", " + s.isAdmin);
        em.merge(s);  
    }
    em.close();

トランザクションで更新

    EntityManager em = EMF.get().createEntityManager();
    em.getTransaction().begin();
    for (OnixUser s: admin) {
        log.info(s.email + ", " + s.isAdmin);
        OnixUser merged = em.merge(s);
        em.persist(merged);
//          em.persist(s);
    }
    em.getTransaction().commit();
    em.close();

それでも保存しませんでした。例外はスローされません。

ログ

 Oct 16, 2013 3:19:10 PM com.example.sdm.server.SDMServiceImpl setAdmin
 INFO: chloe@example.com, true

OnixUser エンティティの App Engine 管理インターフェース

イムグル

FINEST レベルでログに記録する

FINE: Created ManagedConnection using DatastoreService = com.google.appengine.api.datastore.DatastoreServiceImpl@2fd9270d
Oct 16, 2013 4:03:14 PM org.datanucleus.store.connection.ConnectionManagerImpl allocateConnection
FINE: Connection added to the pool : com.google.appengine.datanucleus.DatastoreConnectionFactoryImpl$DatastoreManagedConnection@31c1f89d for key=org.datanucleus.ObjectManagerImpl@6977c57b in factory=ConnectionFactory:tx[com.google.appengine.datanucleus.DatastoreConnectionFactoryImpl@2b1f5f6b]
Oct 16, 2013 4:03:14 PM com.example.sdm.server.SDMServiceImpl setAdmin
INFO: chloe@example.com, true
Oct 16, 2013 4:03:14 PM org.datanucleus.state.LifeCycleState changeState
FINE: Object "com.example.sdm.shared.OnixUser@48ef6e99" (id="com.example.sdm.shared.OnixUser:6456332278300672") has a lifecycle change : "P_CLEAN"->"P_NONTRANS"
Oct 16, 2013 4:03:14 PM org.datanucleus.store.connection.ConnectionManagerImpl$1 managedConnectionPostClose
FINE: Connection removed from the pool : com.google.appengine.datanucleus.DatastoreConnectionFactoryImpl$DatastoreManagedConnection@31c1f89d for key=org.datanucleus.ObjectManagerImpl@6977c57b in factory=ConnectionFactory:tx[com.google.appengine.datanucleus.DatastoreConnectionFactoryImpl@2b1f5f6b]
Oct 16, 2013 4:03:14 PM org.datanucleus.state.LifeCycleState changeState
FINE: Object "com.example.sdm.shared.OnixUser@48ef6e99" (id="com.example.sdm.shared.OnixUser:6456332278300672") has a lifecycle change : "P_NONTRANS"->"DETACHED_CLEAN"
Oct 16, 2013 4:03:14 PM com.google.apphosting.utils.jetty.AppEngineAuthentication$AppEngineUserRealm disassociate
FINE: Ignoring disassociate call for: chloe@example.com
4

1 に答える 1

0

トランザクションを使用しているにも関わらず、データが永続化されていない場合は、ロギングを試して、その下で何が起こっているかを確認するのが最善の方法です。永続化プロバイダーとして DataNucleus を使用しているため、このリンクを参照して SQL ロギングを構成できます。あなたに関連する情報は、ページの最後近くに記載されています。

于 2013-10-16T19:41:58.950 に答える