現在、一時的なものを作成し、をCriteria
使用して一致するエンティティリストを取得してから、リストを次Criteria.list()
の場所に渡す必要があります。HibernateTemplate.deleteAll()
void delete(Criterion criterion) {
Criteria c = DetachedCriteria.forClass(Foo.class).getExecutableCriteria(session);
c.add(criterion);
getHibernateTtemplate().deleteAll(c.list());
}
Criterionで削除することはできますが、最初にリストをロードせずに削除できますか?
たぶん、私は基準をHQLに変換する必要があり"delete from Foo where " + criterion.toHQL()
ますか?
背景
後で解析されてCriteriaコンポジションに変換される検索フォームがあります。
検索結果は、Criteria.list()を使用して取得されます。
さて、疑問が浮かびました。すべての検索結果を削除したいと思います。検索フォームをもう一度解析する必要がありますが、別の方法でHQL文字列に変換する必要がありますか?基準を再利用できれば、もっと簡単になります。
CriteriaはWHERE句と最も同等であるため、(そうではありませんか?)Criteriaを削除に使用できなかった理由はわかりません。