【问题标题】:Where do I set TransactionOptions with JPA / Google App Engine? [duplicate]在哪里使用 JPA / Google App Engine 设置 TransactionOptions? [复制]
【发布时间】:2015-04-13 13:33:30
【问题描述】:

我在 GAE 中使用 JPA 来持久化对象。

javax.persistence.PersistenceException: Illegal argument
    at org.datanucleus.api.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:298)
    at org.datanucleus.api.jpa.JPAEntityTransaction.commit(JPAEntityTransaction.java:122)
Caused by: java.lang.IllegalArgumentException: cross-group transaction need to be explicitly specified, see TransactionOptions.Builder.withXGfound both 
Element {
  type: "Event"
  id: 0x11000000000000
}
and Element {
  type: "User"
  id: 0x14000000000000
}

Event 和 User 之间存在双向多对多关系。当我插入一个新事件并将其绑定到事务中的现有用户时,我得到了上述异常。 从错误消息中我看到我需要调整TransactionOptions。我可以在哪里设置这些选项?

【问题讨论】:

    标签: java google-app-engine jpa persistence


    【解决方案1】:

    persistence.xml中设置如下属性:

    <property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true" />
    

    目前无法为单个 JDO 或 JPA 事务启用 XG 事务。相反,您为所有事务指定此选项。 [docs]

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2011-03-03
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多