带聚合函数的Hibernate子查询问题

Hibernate subquery problem with aggregate function

我正在尝试 运行 在 Hibernate 中(通过 JPA)执行此查询,但它抛出

由以下原因引起:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:(靠近第 1 行,第 32 列

有什么方法可以使这项工作或变得更好吗?我不想使用 OR 子句,因为使用它时查询速度要慢得多。

SELECT SUM(s) as sum FROM (
SELECT count (ID) AS s
  FROM TABLE1 rr
 WHERE rr.status = 0
   AND (rr.risk = '1' AND rr.rate = '222' )
UNION ALL
SELECT count (ID) AS s
  FROM TABLE1 rr
 WHERE rr.status = 0
   AND (rr.risk = '2' AND rr.open  = '222' ))

对于 HQL 查询,Hibernate ORM 不支持 FROM 子句中的子查询(您可以在 WHERE 子句中使用它们)。

如果您不能在没有子查询的情况下将此查询重写为 HQL(例如出于性能原因),我认为可以 运行 在数据库上将其作为本机 SQL 查询:

String sqlQuery = ...;
session.createNativeQuery(sqlQuery).getSingleResult();