SQLクエリがあります
delete from response where r_id in (1,2,3,4) and u_id='10';
今、休止状態を使用してこの queru を実行したいと思います。
これを実行できることはわかっていますcreateSQLQuery
が、基準を使用する必要があります。
どうすればこれを行うことができますか?
ありがとう。
2 つの制限を追加する必要があります。1 つは IN 用です。Restriction.in の Java API は次のとおりです。
static Criterion in(String propertyName, Object[] values) 名前付きプロパティに「in」制約を適用します
したがって、コードは次のようになります
Criteria criteria = session.createCriteria(Yourclass.class);
// create a collection for IN values comparision and lets assume it is called CollectionofValues
criteria.add(Restrictions.in(r_id, collectionofValues);
criteria.add(Restriction.eq(u_id,'10'));
ここで基準を使用する必要がある場合は、すべてのオブジェクトを Java にフェッチし、Java メカニズムを使用してそれらを削除する必要があります。
このアプローチはパフォーマンスの点で非常に遅いですが、IFF は実際に使用する必要があります。
List<Response> doomedResponses = createCriteria(Response.class).addRestriction(/* restrictions here*/).list();
for(Response doomed : doomedResponses) {
entityManager.remove(doomed);
}