gpt4 book ai didi

Hibernate、HSQL 和带限制的更新

转载 作者:行者123 更新时间:2023-12-04 14:42:58 25 4
gpt4 key购买 nike

是否可以限制使用 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 中使用内部选择执行 UPDATE 需要一个 order by,这似乎是个坏主意。有什么方法可以限制更新中的行数?

谢谢。

最佳答案

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

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

一个例子是这样的:

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

关于Hibernate、HSQL 和带限制的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com