HQL或Criteria中的CASE语句

从这个问题派生出来,是否可以将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 

由于可能有很多类型,这可能很慢。 我想数据库为我做的工作。

好吧,似乎支持case语句:

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html

他们似乎没有在count()内工作。 另一种方法是使用sum(例如,当然后是1,否则为0结束)