如何按标准计算所有行,且不超过10

时间:2015-04-21 16:28:13

标签: java hibernate

我试图计算满足特定要求且不超过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();

但它没有工作并且打印了所有行数。

1 个答案:

答案 0 :(得分:1)

criteria.setMaxResults(10);
Integer count = criteria.list().size();
if (count > 10) { 
    return 10; 
}
else { 
    return count;
}

......解决问题的一种方法。