hibernate and delete all

前端 未结 3 1531
悲&欢浪女
悲&欢浪女 2021-02-01 02:31

What is the best way to delete all rows in a table in Hibernate?

If I iterate over a collection and call session.delete() it\'s not perform

相关标签:
3条回答
  • 2021-02-01 03:24
    • if you don't have anything to cascade, use the HQL delete DELETE FROM enityName
    • if you have cascades, iterate the collection and delete each one individually.

    The problem lies in the fact that hibernate handles cascades internally, rather than leaving this to the database. So sending a query won't trigger the internal cascades, hence you will have inconsistencies / orphans.

    If performance is so crucial (after all it's not everyday that one truncates a table), then you can have more than 1 HQL delete for each cascade - i.e. handling the cascades manually.

    0 讨论(0)
  • 2021-02-01 03:28

    You can use HQL for truncate table

    public int hqlTruncate(String myTable){
        String hql = String.format("delete from %s",myTable);
        Query query = session.createQuery(hql)
        return query.executeUpdate();
    }
    
    0 讨论(0)
  • 2021-02-01 03:29
    String stringQuery = "DELETE FROM tablename";
    Query query = session.createQuery(stringQuery);
    query.executeUpdate();
    
    0 讨论(0)
提交回复
热议问题