一尘不染

休眠并删除所有

java

在Hibernate中删除表中所有行 的最佳方法是什么?

如果我遍历一个集合并称session.delete()其在我所知范围内没有执行。

如果使用其他选项session.createQuery("delete ..."),则不会影响持久性上下文。

如果没有更好的选择,何时应该使用这些方法?


阅读 234

收藏
2020-12-03

共1个答案

一尘不染

  • 如果没有什么要层叠的,请使用HQL删除 DELETE FROM enityName
  • 如果您有层叠,请迭代该集合并分别删除每个集合。

问题出在以下事实:休眠在内部处理级联,而不是将其留给数据库。因此,发送查询不会触发内部级联,因此您将出现不一致/孤立的情况。

如果性能是如此关键(毕竟并不是每天都会截断一个表),那么对于每个级联,您可以删除多个HQL,即手动处理级联。

2020-12-03