Hibernate批量删除

Ock*_*zor 4 database hibernate

所以我直接从我的数据库中检索了一个对象列表,并希望删除它们.但是,从文档中,我看起来必须在字符串中构造整个SQL查询,并将该字符串传递给createQuery方法以便删除.有没有更好的方法呢?

    List<Foo> confirm = (List<Foo>) criteria.list();
    session.delete(confirm.get(0)); //Works for single object, 
                                    //what about batching?
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 8

您可以遍历实体并为每个实体调用delete,也可以构造删除查询:

String hql = "delete from Foo f where f.id in :fooIds";
session.createQuery(hql).setParameterList("fooIds", fooIds).executeUpdate();
Run Code Online (Sandbox Code Playgroud)

但请务必了解与此类DML查询相关的限制和警告.它们在文档中有描述.