java - 使用 hibernate 限制删除查询

标签 java sql oracle hibernate hql

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

主要问题是 HQL 不支持用于删除limitrownum之类的东西。我们只有 setMaxResults 用于 select

我想到的解决方案是:

  1. 使用select,然后循环遍历列表,使用delete从列表中删除每个元素。
  2. 使用 session.createSQLQuery 以便能够在查询中使用 limit

第1点:我想避免它,因为我不喜欢必须将元素带入内存然后删除它们,因为元素可以是任何数字(例如1000000),我在以下方面没有限制元素的数量。我有什么遗漏的东西吗?我可以帮助我解决这个问题吗?

第2点:我不知道session.createSQLQuerysession.createQuery之间的性能差异是什么,使用session.createSQLQuery是否有任何不便

最佳答案

其他选项

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

或者

您可以编写两个单独的 HQL 查询,其中第一个查询的结果将输入到另一个查询中(该查询执行实际的删除操作)。

关于java - 使用 hibernate 限制删除查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828624/

相关文章:

java - AssertJ:集合包含值以字符串结尾的元素

C# 创建表时,如果我的列/字段名称包含 "incorrect syntax"连字符,我会收到 "-"错误

java - Docker容器之间的JDBC连接(docker-compose)

java - 具有还原点和闪回系统的嵌入式 Java 数据库

c# - 从 visual studio 和 SQL 中的数据列表中获取选定的产品

sql - ORA-01722 : invalid number in plsql

java - 什么时候单例类比只有静态方法的类更受欢迎?

java - Spring JPA Hsqldb 持久化

java - HTTP 状态 500 - 内部服务器错误 eclipse

sql - AZUR - 使用带有查询的 BCP 导出