gpt4 book ai didi

java - HQL 或 Criteria 中的 CASE 语句

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:54 26 4
gpt4 key购买 nike

源自this question , 是否可以对以下 SQL 语句使用 HQL 或 Criteria:

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: unexpected token: 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(case when... then 1 else 0 end) instead

关于java - HQL 或 Criteria 中的 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com