如何用 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;
}