java - 使用条件计算 hibernate 中按行分组的数量

标签 java sql hibernate group-by

我想用 hibernate Criteria API 计算 group by 行数,但我只能计算每个组中聚合的行数:

ProjectionList projectionList = Projections.projectionList()
        .add(Projections.groupProperty("color"))
        .add(Projections.rowCount());
Criteria criteria = session.createCriteria("ProductEntity");
criteria.setProjection(projectionList);
// adding some criteria
List results = criteria.list();

上面的代码将产生这个查询:

select p.color, count(*) from product p group by p.color

但我想要这个查询:

select count(*) from (select p.color from product p group by p.color)

我知道使用 HQL 是可行的,但我不想使用它。那么我如何使用 Criteria API 做到这一点呢?

最佳答案

如果你想知道有多少种不同的颜色,你应该使用

Projections.countDistinct("color")

这将产生一个查询,该查询将返回与此相同的结果:

select count(*) from (select p.color from product p group by p.color)

关于java - 使用条件计算 hibernate 中按行分组的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27844524/

相关文章:

java - Android studio E/MediaRecorder:无效状态调用停止 : 4

java - 使用 Glassfish 的 Ldap 基本身份验证

java - 如何查看 eclipse IDE 正在使用的当前环境变量?

sql - 如何使用 ON DUPLICATE KEY UPDATE 插入 MySQL 表?

java - 为什么使用@Transactional注解时数据没有保存?

java - 一个现实的例子,其中使用 BigDecimal 作为货币绝对优于使用 double

sql - 如何在 Oracle SQL 数据库中查找相关行

sql - 为什么此语句仅适用于WHERE?

java - 使用setMaxResults限制结果时,Hibernate SQLQuery是否会限制具有 native 功能的结果

java - 从同一实体上的内部连接获取 Hibernate 实体