相关疑难解决方法(0)

Google App Engine - 无法在单个交易中对多个实体组进行操作

如果两个实体的类型都是PersistentLogin,为什么我会收到以下例外?我认为这意味着他们属于同一个实体组,但我猜这是一个不正确的假设.任何想法如何解决这一问题?

这是代码:

// the class is marked with @Transactional
@Override
public final void removeUserTokens(final String username) {
    final Query query = entityManager.createQuery(
        "SELECT p FROM PersistentLogin p WHERE username = :username");
    query.setParameter("username", username);

    for (Object token : query.getResultList()) {
        entityManager.remove(token);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是例外:

Caused by: javax.persistence.PersistenceException: Illegal argument
    at org.datanucleus.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:260)
    at org.datanucleus.jpa.EntityTransactionImpl.commit(EntityTransactionImpl.java:122)
    at org.datanucleus.store.appengine.jpa.DatastoreEntityTransactionImpl.commit(DatastoreEntityTransactionImpl.java:50)
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:467)
    ... 42 more
Caused by: java.lang.IllegalArgumentException: can't operate on multiple entity groups in a single transaction. found both Element {
  type: "PersistentLogin"
  name: "1WfCYx8bmwUGkjzP2PpmFA==" …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine spring jpa datanucleus

1
推荐指数
1
解决办法
5424
查看次数

标签 统计

datanucleus ×1

google-app-engine ×1

java ×1

jpa ×1

spring ×1