2015-04-21 27 views
0

我想算滿足specifiec requrements所有行和不超過10個。這是什麼意思是:如何計算的標準,所有的行和不超過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
criteria.setMaxResults(10); 
Integer count = criteria.list().size(); 
if (count > 10) { 
    return 10; 
} 
else { 
    return count; 
} 

...解決您的問題的一種方法。

+0

我相信你自己知道這不是一個好方法,因爲所有的實體都是逆向的。 – user3663882

+0

您也可以在.setMaxResults(10)調用後執行該操作,@ user3663882 – hd1

+0

請參閱我的編輯 – hd1