是否可以限制使用 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,以便我可以在内存数据库中使用 HSQL DB 以及在部署中使用 MySql 进行一些单元测试。 MySql 支持 Update 语句上的 Limit 子句,但 HSQL 不支持,并且在 HSQL 中使用内部 select 执行 UPDATE 需要 order by,这似乎是一个坏主意。有没有办法实现限制更新中的行数?
Thanks.
尝试 HSQLDB 2.0(最新的快照 jar,不是 GA)与 Hibernate 3.5.5
它确实需要最后带有 LIMIT 的内部选择,但这不再需要 ORDER BY。此外,如果 ORDER BY 与 SELECT 使用的索引相同,则 ORDER BY 可以使用索引。
一个例子是这样的:
UPDATE MyObj o SET o.prop = :prop WHERE o.id IN (SELECT id FROM MyObj LIMIT 10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)