当前位置: 首页 > 知识库问答 >
问题:

QueryDSL-将子查询添加到FROM语句(2021)

马和硕
2023-03-14

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

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

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

共有1个答案

柴英光
2023-03-14

如果仔细阅读链接的问题,Timo说的是“QueryDSL SQL”。这是直接发出SQL的QueryDSL模块,完全绕过JPA。

也就是说,在使用普通SQL时可以在from子句中使用子查询,而在使用JPQL时则不能。

这就是为什么com.querydsl.sqlCommonQuery.From方法有一个采用subQueryExpression的重载,而com.querydsl.jpa.jpqlQuery.From方法没有这种重载的原因。

 类似资料:
  • 请您帮助我为SQL创建QueryDSL构造,如下所示,使用JPA查询。我使用的是4.1.3。

  • 我正在解决一个使用QueryDSL构造查询语句的java应用程序的性能问题。在与DBA合作后,有人建议我在查询中添加以下语句: 当前,我们正在执行查询,如下所示: 提前道谢。

  • 问题内容: 我们正在开发一个使用EJB连接到数据库的Web应用程序。 在我们的数据库模型中,我们有一个移动设备表,另一个有功能表,最后一个有手机模型映射功能值的表。模型(id_model,…)功能(id_feature,…)model_features(id_model,id_feature,值) 我们想要执行一个查询,以按匹配特征的数量对模型进行排序。就是说,我们传递了一个要匹配的功能列表(即从

  • 我有以下三个类的模型。A类包含1个B,也可以包含0个或更多个C。B类和C类都包含我想在A类范围内一起求和的金额。 有人知道在Hibernate条件中是否可以向FROM-子句提供子查询吗?多谢! (已更新) 显然,在内部查询中添加一个指向外部查询的附加筛选器解决了这个问题。要从子查询中引用父查询实体,请使用神奇的关键字“this”。

  • 问题内容: 如何使用Criteria编写以下SQL: 问题答案: 要使用NHibernate,产生如下查询: 我们必须选择: 将子选择映射为实体。 创建原始SQL查询 第一种选择是创建一些,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能 : 第二种选择是关于使用NHibernate API创建本机/原始SQL: 它没有从映射中

  • 我有一个Spring Boot应用程序。在其中,我有一个SQL查询,需要创建一个子查询,内部将该子查询的结果与另一个表连接,然后从该内连接的结果中进行选择。但是很明显,JPA不允许您在OF子句中使用子查询(我假设既不使用JPQL也不使用Criteria API)。有没有办法绕过这个? 我考虑过将子查询的结果存储在一个临时实体中(理想情况下不创建可持久化到DB的表),然后从存储在这些实体中的数据中进