下一个代码将显示 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
映射为 ResultTable
实体中的 userId
字段。
关于java - Criteria API 和独特的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238093/