什么是在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内部处理级联关系,而不是将其留给数据库。因此,发送查询不会触发内部级联,因此您将拥有不一致/孤儿数据。
如果性能非常重要(毕竟不是每天都要截断表),那么可以为每个级联关系使用多个HQL delete - 即手动处理级联关系。
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();