是否可以将 COUNT 与 DISTINCT JPA 投影结合使用?

2022-09-02 01:42:03

我正在使用JPA独特的投影来获取一些数据:

select distinct o.f1, o.f2, o.f3 from SomeEntity o where ...

这适用于 setFirstResult 和 setMaxResults 到页面数据。

但是,我需要计算总行数而不获取所有行。我试过:

select count(distinct o.f1, o.f2, o.f3) from SomeEntity o where ...

这不起作用(无论如何使用EclipseLink),并且JPA规范似乎不允许这样做。还有别的方法吗?我不想写一个SQL查询来做到这一点。


答案 1

试试这个:

select count(distinct o) from SomeEntity o where ...

答案 2

如果 EclipseLink 和您的底层数据库允许子选择,请尝试:

select count(*) from (select distinct o.f1, o.f2, o.f3 from SomeEntity o where ... )

这样,您只需输入 JQL 即可计算其总结果大小。

这适用于休眠 sql 命名查询。我很快就会在JP-QL查询上尝试它。


推荐