【发布时间】:2011-10-27 10:31:08
【问题描述】:
派生自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
尽管 google 提出了一些 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
由于可能有很多类型,这可能会很慢。我希望数据库为我完成这项工作。
【问题讨论】:
标签: java sql hql criteria-api