我在 DB2 中有 100,000 行要删除。我使用 Hibernate (HQL) 之类的东西,比如从 query.executeQuery()
中删除。
HQL 中是否可以限制要删除的行数?例如:
query.setMaxRowTodelete(100); // this is just an example.
query.executeQuery();
最佳答案
遗憾的是,您无法使用 HQL 进行限制,并且 query.setMaxResults(number)
无法与 UPDATE
或 DELETE
一起使用。您的选择是:
- 迭代/加载每个对象并将其删除。恶心!
- 编写两个单独的 HQL 查询,其中第一个查询的结果将输入另一个查询(执行实际删除)。在您的情况下可能可行,也可能不可能。
- 使用原始 SQL/JDBC。
- 进行两个查询:第一个仅对 ID 进行查询(不加载实际对象),结果集有限(在您的情况下为 100 个)。第二个查询将删除
WHERE someid IN (id1, id2, ..., id100)
关于hibernate - 如何仅删除前 100 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462429/