java - 谷歌应用引擎: How to "close" an object before second transaction?

标签 java google-app-engine jdo

这是我的方法之一的伪代码:

1. Get PersistenceManager (pm)


2. pm.fetchObject1

3. pm.beginTransaction

4. pm.modifyObject1

5. pm.commit


6. pm.fetchObject2

7. pm.beginTransaction

8. pm.modifyObject2

9. pm.commit

但是我收到此错误“无法对一个中的多个实体组进行操作” 单笔交易...”

我是否需要在步骤 5 和步骤 7 之间再添加一行来表示我 对象 1 已“完成”,想要关闭它吗?

谢谢

最佳答案

虽然你所说的应该有效,但它可能是 bug在应用程序引擎中。同时,您可以执行以下操作(伪代码),或者将实体 object1 和 object2 放在同一实体组中。有关交易和实体组的更多信息 here

  1. Get PersistenceManager (pm)

  2. pm.currentTransaction (tx)

  3. tx.begin

  4. pm.fetchObject1

  5. modifyObject1

  6. tx.commit

  7. pm.close


  8. Get PersistenceManager (pm)

  9. pm.currentTransaction (tx)

  10. tx.begin

  11. pm.fetchObject2

  12. modifyObject2

  13. tx.commit

  14. pm.close

还有更多讨论here

关于java - 谷歌应用引擎: How to "close" an object before second transaction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282065/

相关文章:

java - Stream.close() 是终端操作吗?

google-app-engine - Gae Jdo 坚持一对多关系与双向导航

eclipse - 如何解决 xsi :noNamespaceSchemaLocation in jdoconfig. xml 上的验证错误

java - 子模块的maven版本依赖注入(inject)

java - 无法更改 Java 版本 GNU/linux

c# - ASP.NET 和 Java Web 应用程序的相似之处

java - 创建签名 URL 以将对象放入 Google Storage

python - 向多个设备 token 发送推送通知的 PyAPNs 不起作用

java - App Engine - Java AppStats - 将所有请求显示为 cpu 时间 0

java - 由于 PMF,AppEngine JDO 无法创建持久对象