派生自this question,是否可以将HQL或Criteria用于以下SQL语句:
SELECT
e.type,
count(e),
count(d),
count (case when gender = 'male' then 1 else NULL end) AS NumberOfMaleEmployees
from Department d
JOIN d.employees e
WHERE e.dead = 'maybe'
GROUP BY e.type
虽然谷歌提出了一些HQL支持CASE语句的点击,但Hibernate 3.6.6失败了
QuerySyntaxException:意外令牌:CASE
当我在EntityManager实例上创建上面的查询时。
为每个e.type创建另一个查询以手动确定男性数量,例如,有多糟糕。对于每个e.type
SELECT
count(e),
from Department d
JOIN d.employees e
WHERE e.dead = 'maybe', e.type = ugly
由于可能有不少类型,这可能很慢。我想数据库为我做的工作。
答案 0 :(得分:11)
好吧,似乎支持案例陈述:
http://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html
他们似乎没有在count()内工作。另一种方法是使用sum(情况是......然后其他0结束)instead