我想创建一个新功能,以编程方式从表中删除行,并限制行数。那可能是成千上万个要删除的元素。使用的数据库是Oracle。
主要问题是HQL不支持alimit
或rownum
for deletes
。我们只setMaxResults
为select
。
我考虑过的解决方案是:
select
,然后遍历列表,将列表中的delete
每个元素都删除。session.createSQLQuery
可以limit
在查询中使用。要点1:我想避免这种情况,因为我不希望将元素带到内存中然后再删除它们,因为元素可以是任意数量(例如1000000),所以我对元素的数量没有任何限制。我有什么想念的,可以为我提供解决方案吗?
要点2:我不知道session.createSQLQuery
和之间的性能差异是什么session.createQuery
,是否有使用上的麻烦session.createSQLQuery
?
其他选择
您可以尝试遍历/加载每个对象并将其删除。(看起来很丑!)
或者
您可以编写两个单独的HQL查询,其中第一个查询的结果将馈送到另一个查询中(该查询将实际删除)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句