Hibernate,HSQL和更新w /限制

时间:2010-09-07 18:32:44

标签: hibernate limit hsqldb

是否可以限制使用Hibernate / HQL更新的行数?例如:

Query q = em.createQuery("UPDATE MyObj o Set o.prop = :prop");
q.setParameter("prop", "foo");
q.setMaxResults(myLimit);

int res = q.executeUpdate();
if (res > myLimit) {
    // This is entering here and I don't want it to!
}

我一直在谷歌搜索等等,我正在尝试使用HQL,以便我可以在内存dbs中使用HSQL DB进行一些单元测试,以及在部署中使用MySql。 MySql支持Update语句的Limit子句,但是HSQL没有,并且在HSQL中使用内部选择执行UPDATE需要一个order by,这看起来是个坏主意。有没有办法让我实现限制更新中的行数?

感谢。

1 个答案:

答案 0 :(得分:2)

使用Hibernate 3.5.5

尝试HSQLDB 2.0(最新的快照jar,而不是GA)

它确实需要在结尾处使用LIMIT进行内部选择,但这不再需要ORDER BY。此外,如果索引与用于SELECT的索引相同,则ORDER BY可以使用索引。

一个例子就是:

UPDATE MyObj o SET o.prop = :prop WHERE o.id IN (SELECT id FROM MyObj LIMIT 10)