JPA在不同的事务中更新实体

时间:2014-09-09 22:26:01

标签: java google-app-engine jpa google-cloud-datastore

我正在使用GAE Datastore JPA 2.0(在Dev Server上)

问题非常简单。如何更新已在数据存储区中的实体,以及从提取它的实例和实体管理器实例持久的实体。

例如,在会话中被序列化为属性的用户实体,获取它的事务已经长时间关闭并且已经消失,它刚被修改。 持久化实体会发出错误消息,表明该实体已经存在。 合并它,不会产生错误,但它会发出警告,说明事务未提交或回滚,并回滚事务,尽管我在合并后明确提交并关闭。不知道这里发生了什么!真正烦人的事情是其他实体更新通常没有问题...是一个开发服务器错误? (还有许多有趣的东西发生在命名空间,实体最后在空命名空间中,当它们不应该时)请帮忙!

确切案例:

EntityManager em = EMF.get().createEntityManager();
em.getTransaction().begin();
em.merge(MyInstance);
//MyInstance is an entity that is already persistent, modified its datastore value, currently 
//dettached and I would very much like to update the datastore record to its value
em.getTransaction().commit();
em.close();

结果:

Sep 10, 2014 3:38:11 AM com.google.apphosting.utils.servlet.TransactionCleanupFilterhandleAbandonedTxns
WARNING: Request completed without committing or rolling back transaction with id 2.Transaction will be rolled back.

0 个答案:

没有答案