8

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;
}
4

1 に答える 1