使用JPA和Google App Engine更新查询

时间:2012-04-26 08:52:02

标签: google-app-engine jpa

我正在尝试更新我的实体类,但我得到了:

javax.persistence.PersistenceException: Only select and delete statements are supported.

当我没有使用Google应用引擎时,这个确切的代码工作正常。 我的代码是:

    em.getTransaction().begin();

    Query query =
            em.createQuery("UPDATE Profile p" +
                           "SET p.age = 1 " +
                           "WHERE p.email = :email" );

    query.setParameter("newPoint", point);
    query.setParameter("email", email);

    int updateCount = query.executeUpdate();        
    em.getTransaction().commit();

所以我问如何更新实体查询?

1 个答案:

答案 0 :(得分:2)

由于GAE数据存储区不支持直接更新数据存储区中字段的查询,因此您同样无法通过JPA API执行此操作。由于JPA从未设计用于其他类型的数据存储,因此您将看到不适用的功能。

通过查询检索对象,并手动更新它们。

当GAE提供完整的map-reduce开箱即用时,那样的东西可以支持