HQL是否支持聚合函数中的条件表达式?
我想做这样的事情
select
o.id,
count(o),
count(o.something is null and o.otherthing = :other)
from objects o
但是我从Antlr解析器中得到了一个MissingTokenException。
编辑:通过使用子查询,它正在运行,但它很难看,因为我正在按几个变量进行分组......
答案 0 :(得分:2)
您可以在HQL中使用表达式。对于此实例,您将要使用SUM而不是COUNT,如下所示:
select
o.id,
count(o),
sum(case when o.something is null and o.otherthing = :other then 1 else 0 end)
from objects o
当条件匹配时,SUM将为该行接收1。当它们不匹配时,它将收到零。这应该提供与COUNT相同的功能。