下一条代码将显示所有行,其中ispassed=true
:
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。
最佳答案
我认为您想获取isPassed
状态为true的行数,并且只考虑每位用户一个这样的记录。如果是这样,您可以尝试:
Criteria crit = hSession.createCriteria(ResultTable.class);
crit.add( Restrictions.eq("ispassed", true));
crit.setProjection(Projections.groupProperty("userId"));
total = crit.list().size();
注意:假定
user_id
映射为userId
实体中的ResultTable
字段。