Hibernate Criteriaで「存在する」クエリを最もよく表現する方法は?
私のプロジェクトでは、カウント プロジェクションを使用して、条件に一致する行があるかどうかを確認します (カウント > 0)。より効果的にするために、代わりに exists を使用することをお勧めします。
基準によってカウントするための基本コードは次のとおりです。
public int count(final DetachedCriteria criteria) throws DataAccessException {
Object countResult = executeWithNativeSession(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Criteria executableCriteria = criteria.getExecutableCriteria(session);
executableCriteria.setProjection(Projections.rowCount());
prepareCriteria(executableCriteria);
return executableCriteria.uniqueResult();
}
});
if (countResult == null) {
countResult = 0;
}
return (Integer) countResult;
}