2016-03-26 62 views
0

包含所有行的下一個代碼結果,其中ispassed=true標準API和獨特的結果

Criteria crit = hSession.createCriteria(ResultTable.class); 
crit.add(Restrictions.eq("ispassed", true)); 
crit.setProjection(Projections.rowCount()); 
total = (long) crit.uniqueResult(); 

但「ResultTable」表還包含user_id列,可以有像行:

-ispassed    -user_id 
true     1 
true     1 
true     2 
true     3 
true     4 

那麼如何我可以只獲得user_id是唯一的行嗎? 所以結果必須是4.

回答

1

我想你想獲得其行狀態isPassed是真實的數量,要考慮每個用戶只有一個這樣的記錄。如果是的話,你可以嘗試:

Criteria crit = hSession.createCriteria(ResultTable.class); 
crit.add(Restrictions.eq("ispassed", true)); 
crit.setProjection(Projections.groupProperty("userId")); 
total = crit.list().size(); 

注:假設user_idResultTable實體被映射爲userId場。

+0

@rozerro我們可以進一步簡化它。更新了答案。你可能想嘗試一下。 –