在哪里可以使用JPA / Google App Engine设置TransactionOptions?

时间:2015-04-13 13:33:31

标签: java google-app-engine jpa persistence

我在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
}

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

1 个答案:

答案 0 :(得分:0)

persistence.xml中设置以下属性:

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

目前无法为单个JDO或JPA事务启用XG事务。而是为所有事务指定此项。 [docs]