Java JPA中的命名查询

Java JPA中的命名查询,java,sql,jpa,named-query,Java,Sql,Jpa,Named Query,据我所知,更新和删除可以通过NamedQuery完成 query.executeUpdate(); 但是, void updateName (int ID, String name) { EntityManager entityManager = Persistence.createEntityManagerFactory("uPU").createEntityManager(); Query query = entityManager.create

据我所知,更新和删除可以通过NamedQuery完成

query.executeUpdate();
但是,

void updateName (int ID, String name) {        

   EntityManager entityManager = 
      Persistence.createEntityManagerFactory("uPU").createEntityManager();
   Query query = entityManager.createNamedQuery("Users.updateName");
   query.setParameter("name", name);
   query.setParameter("id", ID);
}
没有进行更新

命名查询如下所示:

@NamedQuery(name = "Users.updateName", query = "UPDATE Users u SET u.name = :name "
        + "WHERE u.id = :id "),
DELETE也发生了类似的事情

在NamedQuery上选择没有问题

使用NamedQueries更改SQL表的内容是否还有其他方法

//================================

加:

我正在使用namedquery

据我所知,在NamedQuery上打开事务并提交它是不必要的

query.executeUpdate();
给出一个运行时错误

//================================

地址2:


除了下面DataNucleus建议的添加之外,代码没有给出编译或运行时错误。关于这个建议,请参阅我的上一版本。

是否考虑实际执行查询?你所做的就是创造它

query.executeUpdate()

请参见行注释后的“我的编辑”。特别强调命名查询。如果您有异常,您不认为人们会希望看到它及其堆栈跟踪吗?如果异常是TransactionRequiredException,那么这就是JPA规范所说的,如果不存在指定的tx或其他tx,则将抛出该异常-查看规范。显然,这也取决于您的JPA实现,因为一些例如DataNucleus JPA允许非事务操作。建议的添加是必不可少的。当您添加该选项时,异常/错误是什么?