使用 2 个字段的 Hibernate 计数问题

标签 hibernate jpa hql

在备件表中,行的唯一性由 Material 名称和 Material 编号的组合给出,我想要做的是获取现在可用的备件总数。

我尝试过使用 count(distinct ...) 但它只适用于一个字段,而不是两个字段。

带有内部查询的 SQL 查询(使用 hibernate 查询语言)如下所示:

select count(*) from (
     select distinct materialName, materialNo from SparePart
) as col

最佳答案

使用子查询+group by,然后过滤代表特定组的第一个ID,最后计算所有与过滤器匹配的ID:

SELECT COUNT(sp2) FROM SparePart sp2 WHERE EXISTS
  (SELECT sp.materialName, sp.materialNo
          FROM SparePart sp
          GROUP BY sp.materialName, sp.materialNo
          HAVING MIN(sp.id)=sp2.id)

关于使用 2 个字段的 Hibernate 计数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049799/

相关文章:

java - 查询性能不佳,选择少量字段比选择大量字段慢 10 倍

mysql - 插入多行 JPA Spring Boot Mysql

java - 我应该使用什么直接 FK 字段或实体对象?

java - Hibernate 命名查询 Order By 参数

java - 将此 HQL 转换为条件

java - 使用 hibernate 连接到远程数据库时出现问题

java - Spring Query DSL 给出空指针异常

java - 如何在 JPQL 中找到第一个

java - JPA 为什么返回 2 个对象的查询不起作用而返回 1 个对象的查询工作正常

java - 有人能告诉我在我的案例中 spring-data 投影的真正原因吗?