带聚合函数的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();
我正在尝试 运行 在 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();