使用休眠限制删除查询

韦索尔

我想创建一个新功能,以编程方式从表中删除行,并限制行数。那可能是成千上万个要删除的元素。使用的数据库是Oracle。

主要问题是HQL不支持alimitrownumfor deletes我们只setMaxResultsselect

我考虑过的解决方案是:

  1. 要使用select,然后遍历列表,将列表中的delete每个元素都删除
  2. 使用session.createSQLQuery可以limit在查询中使用

要点1:我想避免这种情况,因为我不希望将元素带到内存中然后再删除它们,因为元素可以是任意数量(例如1000000),所以我对元素的数量没有任何限制。我有什么想念的,可以为我提供解决方案吗?

要点2:我不知道session.createSQLQuery之间的性能差异是什么session.createQuery,是否有使用上的麻烦session.createSQLQuery

斯里尼伏

其他选择

您可以尝试遍历/加载每个对象并将其删除。(看起来很丑!)

或者

您可以编写两个单独的HQL查询,其中第一个查询的结果将馈送到另一个查询中(该查询将实际删除)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章