一尘不染

Hibernate并删除所有

hibernate

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

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

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

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


阅读 207

收藏
2020-06-20

共1个答案

一尘不染

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

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

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

2020-06-20