休眠并全部删除
2022-09-01 04:27:45
在休眠中删除表中的所有行的最佳方法是什么?
如果我迭代一个集合并调用它,据我所知,它没有执行。session.delete()
如果我使用其他选项,它不会影响持久性上下文。session.createQuery("delete ...")
如果没有更好的变体,我什么时候应该使用这些方法?
在休眠中删除表中的所有行的最佳方法是什么?
如果我迭代一个集合并调用它,据我所知,它没有执行。session.delete()
如果我使用其他选项,它不会影响持久性上下文。session.createQuery("delete ...")
如果没有更好的变体,我什么时候应该使用这些方法?
您可以使用 HQL 截断表
public int hqlTruncate(String myTable){
String hql = String.format("delete from %s",myTable);
Query query = session.createQuery(hql)
return query.executeUpdate();
}
DELETE FROM enityName
问题在于休眠在内部处理级联,而不是将其留给数据库。因此,发送查询不会触发内部级联,因此您将遇到不一致/孤立项。
如果性能如此重要(毕竟截断表并不是每天都有),那么您可以为每个级联进行1次以上的HQL删除 - 即手动处理级联。