Sql 可以在JPA查询中添加having子句以返回自定义实体吗?

Sql 可以在JPA查询中添加having子句以返回自定义实体吗?,sql,hibernate,jpa,jpql,Sql,Hibernate,Jpa,Jpql,我有以下jpa查询(我从中删除了不相关的信息): 它返回一个自定义对象作为结果,而不是实体 是否可以在其中包含having子句 sql等价物可以工作,看起来像: select et.id,count(ret.id) from someentity et left join somerelatedentity ld on (...) group by et.id **having count(ret.id) between 1 and 100** 是否可以在jpa查询中写入此内容?我还没有找到任

我有以下jpa查询(我从中删除了不相关的信息):

它返回一个自定义对象作为结果,而不是实体

是否可以在其中包含having子句

sql等价物可以工作,看起来像:

select et.id,count(ret.id)
from someentity et
left join somerelatedentity ld on (...)
group by et.id
**having count(ret.id) between 1 and 100**

是否可以在jpa查询中写入此内容?我还没有找到任何相关的例子:(

是的,这是可能的。根据hibernate文档(请参阅部分)

在分组查询中,where子句应用于非聚合值(本质上它确定行是否将其加入聚合)。HAVING子句也限制结果,但它对聚合值进行操作

HAVING
子句遵循与
WHERE
子句相同的规则,并且也由谓词组成。
HAVING
在分组和聚合完成后应用,而
WHERE
子句在分组和聚合完成后应用

因此,您可以通过以下方式将having子句添加到第一个查询中:

选择新的SomeEntitySummary(et.id,count(ret.id))
从SomeEntity et left连接SomeRelatedEntity ret on(…)
哪里
按et.id分组
计数(ret.id)在1到100之间的
select et.id,count(ret.id)
from someentity et
left join somerelatedentity ld on (...)
group by et.id
**having count(ret.id) between 1 and 100**