hibernate - 如何仅删除前 100 行?

标签 hibernate hql limit

我在 DB2 中有 100,000 行要删除。我使用 Hibernate (HQL) 之类的东西,比如从 query.executeQuery() 中删除。

HQL 中是否可以限制要删除的行数?例如:

query.setMaxRowTodelete(100); //  this is just an example.
query.executeQuery();

最佳答案

遗憾的是,您无法使用 HQL 进行限制,并且 query.setMaxResults(number) 无法与 UPDATEDELETE 一起使用。您的选择是:

  • 迭代/加载每个对象并将其删除。恶心!
  • 编写两个单独的 HQL 查询,其中第一个查询的结果将输入另一个查询(执行实际删除)。在您的情况下可能可行,也可能不可能。
  • 使用原始 SQL/JDBC。
  • 进行两个查询:第一个仅对 ID 进行查询(不加载实际对象),结果集有限(在您的情况下为 100 个)。第二个查询将删除 WHERE someid IN (id1, id2, ..., id100)

关于hibernate - 如何仅删除前 100 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462429/

相关文章:

php - MYSQL 使用四个 LEFT JOINS 和 LIMIT CLAUSES 显示嵌套结果

hibernate - chalice :Column transformers ( like Hibernate )

java - 不等于 hql 中的查询不起作用

php - 如何随机给mysql查询限制

java - 插入 Sql 查询不适用于 HQL

java - 使用 JPQL 或 HQL 时如何将 @OneToMany 字段映射到 List<DTO>?

browser - 限制客户端访问具有 1 个选项卡和 1 个浏览器的网站?

java - Hibernate JPA,连接多个表

java - JPA/hibernate : schema generation with multiple persistence units

Hibernate 不在一对多关系中插入列