4

そこで、データベースからオブジェクトのリストを直接取得し、それらを削除したいと思います。ただし、ドキュメントからは、SQLクエリ全体を文字列で作成し、その文字列をcreateQueryメソッドに渡して削除する必要があるようです。それを行うためのより良い方法はありませんか?

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

2 に答える 2

8

エンティティを反復処理してそれぞれに対して delete を呼び出すか、削除クエリを作成します。

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

ただし、このような DML クエリに関連する制限と注意事項を必ず理解してください。それらはドキュメンテーションで説明されています。

于 2013-01-07T19:10:28.970 に答える
3

String hql = "delete from Foo f where f.id in :fooIds"; またはそのよう String hql = "delete from Foo f where f.id in (:fooIds)"; な例外がスローされる: "スレッド "メイン" org.hibernate.hql.ast.QuerySyntaxException での例外: 予期しないトークン: "私の休止状態のバージョンは 3.6.0.Final です。

于 2013-09-16T06:16:32.270 に答える