java - Criteria API 和独特的结果

标签 java hibernate hibernate-criteria

下一个代码将显示 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/

相关文章:

java - Hibernate 集合不与任何 session 关联

java - Hibernate:如何将此标准重写为 HQL?

java - 在 Hibernate 中使用 Criteria 连接两个表?

java - 集合值的 Hibernate 标准

java - 检索 JTextField 文本值

java - Spring Boot 退出代码生成器 - 实现不起作用

java - Clojure 与 Var.intern 和 RT.var 的怪异

java - 如何在 Eclipse 中使用 JavaPOS 进行开发?

java - 删除父项将子值设置为 NULL 而不删除它们

java - Spring MVC 在数据库中创建新行,同时想要更新