如何用Hibernate Criteria最好地表达"存在"查询?
在我的项目中,人们使用计数投影来检查是否有任何行符合条件(count> 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;
}
Run Code Online (Sandbox Code Playgroud)
前段时间,我有同样的疑问,我认为这是无效的.所以我现在所做的就是搜索第一个巧合,那就更快了.
protected boolean exists(final Criteria query) {
query.setProjection(Projections.id());
query.setMaxResults(1);
return query.uniqueResult() != null;
}
Run Code Online (Sandbox Code Playgroud)
我希望有所帮助.
| 归档时间: |
|
| 查看次数: |
5089 次 |
| 最近记录: |