【问题标题】:QueryDSL - add subquery into FROM statement (2021)QueryDSL - 在 FROM 语句中添加子查询 (2021)
【发布时间】:2021-07-29 15:21:15
【问题描述】:

根据@Timo Westkämper(参见QueryDSL - add subquery into FROM statement),在 2013 年,可以在 FROM 子句中包含子查询。现在看来这不再可能了,因为 JPQL 规范不允许这样做:

(https://docs.oracle.com/cd/E12839_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_subqueries) 在此版本中,子查询仅限于 WHERE 和 HAVING 子句。 FROM 子句中对子查询的支持将在以后的规范版本中考虑。

我不明白这怎么可能。您能否确认在 querydsl 4.4.x 的 FROM 子句中不能使用子查询?

【问题讨论】:

    标签: java jpa querydsl


    【解决方案1】:

    如果您仔细阅读链接的问题,Timo 正在谈论“Querydsl SQL”。那就是直接发出 SQL 的 QueryDSL 模块,完全绕过了 JPA。

    也就是说,当使用纯 SQL 时,您可以在 from 子句中使用子查询,但在使用 JPQL 时则不能。

    这就是为什么方法com.querydsl.sql.SQLCommonQuery.from 有一个overload that takes a SubQueryExpression,而方法com.querydsl.jpa.JPQLQuery.from doesn't have such an overload

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-10-23
    • 1970-01-01
    • 2021-11-01
    • 2013-07-30
    • 2019-10-01
    相关资源
    最近更新 更多