hibernate - from 子句中的 JPA/hibernate 子查询

标签 hibernate jpa subquery

我们使用 JPA 和 hibernate 作为提供者, 我们有一个查询,其中包含与 FROM 子句中的子查询的联接,但出现以下错误:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ( near line 1, column 75 [SELECT sd FROM com.hp.amber.datamodel.entities.analysis.SnapshotDates sd, (SELECT max(x.changeDate) maxChangeDate, x.viewId, x.state FROM com.hp.amber.datamodel.entities.analysis.SnapshotDates x WHERE x.changeDate<:date AND x.viewId in (:viewIds) AND x.state=:state GROUP BY x.viewId, x.state) sd2 WHERE sd.viewId = sd2.viewId AND sd.state = :state AND sd.changeDate = sd2.maxChangeDate]

这是查询:

SELECT sd 
FROM SnapshotDates sd, 
     (SELECT max(x.changeDate) maxChangeDate, x.viewId, x.state 
      FROM SnapshotDates x
     WHERE x.changeDate<:date AND x.viewId in (:viewIds) AND x.state=:state
GROUP BY x.viewId, x.state) sd2
WHERE sd.viewId = sd2.viewId 
      AND sd.state = :state 
      AND sd.changeDate = sd2.maxChangeDate

感谢您的帮助

最佳答案

我不认为 HQL 可以在 from 子句中执行子查询

https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch16.html#queryhql-subqueries

注意这句话:

Note that HQL subqueries can occur only in the select or where clauses.

我想您可以将其更改为 native 查询并以这种方式执行。

关于hibernate - from 子句中的 JPA/hibernate 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7269010/

相关文章:

mysql - FROM 子句中选择与子查询的速度差异

hibernate - 带有JPA API的Hibernate ResultTransformer

java - 如何将 LEFT JOIN 和 Where 子句与 JPQL 结合使用?

java - Hibernate 在从相关实体中删除时加载 LOBS(不应该是懒惰的)?

spring - 实体类何时增强,用于什么? jpa, Spring , hibernate ,javassist

MySQL:错误代码:1242 子查询返回超过 1 行

mysql - 迭代计算具有列相关性的行?

java - 与Java中枚举类型的关系

java - 使用 Jmeter 对登录功能进行一些测试后,在范围内找不到 bean userList

带有元组表达式的子句中的 JPA 条件