如何通过JPQL更新表中的一行,但id号最大

时间:2013-12-18 09:27:28

标签: java sql hibernate jpa

我运行以下代码打算更新Hibernate 3.6.7 final(JPA 2.0?)表中的最少记录:

Query query = em.createQuery("UPDATE MyTable a SET a.isEnable=1 WHERE a.isEnable=0 ORDER BY a.id DESC").setMaxResults(1);
query.executeUpdate();

但是hibernate在生成sql时会忽略ORDER BY

ORDER BY的{​​{1}}仅用于JPQL吗?如何在JPA中使用SELECT执行UPDATE查询?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要使用表格中的最后一个ID更新记录,请执行以下操作:

TypedQuery<MyEntity> query = em.createQuery("SELECT a FROM MyEntity a WHERE a.isEnable=0 ORDER BY a.id DESC", MyEntity.class);
query.setMaxResults(1);

List<MyEntity> resultList = query.getResultList();
if (resultList.size()>0) {
    resultList.get(0).setEnabled(true);
    //eventually you can to em.flush();
}