我试图计算满足特定要求且不超过10的所有行。我的意思是:
如果rowsCountWithRestriction > 10
则打印10
否则打印实际的行数。但我不能接受并写下if-else,以便:
Integer count;
Criteria criteria;
//restricting the criteria
if(rowsCount > 10){
count = 10;
} else {
count = (Integer) criteria.uniqueResult();
}
因为我实际上有更复杂的Restrictor
抽象,它对标准施加了限制。它看起来像
public interface CriteriaRestrictor {
public void applyTo(Criteria criteria);
}
我尝试了以下条件查询:
Criteria criteria = getSession().createCriteria(Entity.class);
//setting restrictions
criteria.setMaxResult(10);
Integer count = (Integer) criteria.uniqueResult();
但它没有工作并且打印了所有行数。
答案 0 :(得分:1)
criteria.setMaxResults(10);
Integer count = criteria.list().size();
if (count > 10) {
return 10;
}
else {
return count;
}
......解决问题的一种方法。