在 Hibernate 中删除表中所有行的最佳方法是什么?
如果我遍历一个集合并称它为session.delete()
我所知的不执行。
如果我使用另一个选项session.createQuery("delete ...")
,它不会影响持久性上下文。
如果没有更好的变体,我什么时候应该使用这些方法?
在 Hibernate 中删除表中所有行的最佳方法是什么?
如果我遍历一个集合并称它为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
问题在于hibernate在内部处理级联,而不是把它留给数据库。因此发送查询不会触发内部级联,因此您将遇到不一致/孤儿。
如果性能如此重要(毕竟不是每天都会截断一个表),那么您可以为每个级联删除 1 个以上的 HQL - 即手动处理级联。
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();