如何仅删除前100行?

时间:2012-11-19 21:18:25

标签: hibernate hql limit

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

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

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

2 个答案:

答案 0 :(得分:8)

可悲的是,您无法使用HQL进行限制,query.setMaxResults(number)无法使用UPDATEDELETE。您的选择是:

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

答案 1 :(得分:0)

不,不幸的是不可能。为此,根据您的使用情况,我会研究是否值得以下任何一点: 1到select使用setMaxResults,然后迭代删除带有delete的元素(性能不佳) 2使用session.createSQLQuery,创建一个SQL,你就可以使用limit