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

QueryDSL-使用JPA将子查询添加到FROM语句中

通正平
2023-03-14

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

SELECT * FROM (SELECT a FROM b WHERE a.z = 1) WHERE rownum <=1;

共有1个答案

束帅
2023-03-14

以下查询:

在a.z=1时从b中选择a

没有任何order by子句,因此将应用默认排序。根据这个SO答案,订货是不预测的。因此,我建议添加order by子句。

如果这只是一个示例,并且实际查询包含order by,那么您可以在单个查询中实现类似的逻辑;而不是将其包装到另一个查询中并获得第一行,例如,使用rownum来执行(从b中选择a,其中a.z=1阶由z)。下面是通过JPA方式实现的步骤:

>

  • 为该表编写存储库(您可以扩展PagingandSortingRepository,因为它已经有了一些方法)
  • 编写一个接受pageble参数的findby()方法(连同z),它将如下所示:public list findByZ(int z,Pageable Pageable)
  • 使用zpageRequest调用它,例如:

    Final PageRequest page1=新PageRequest(0,1,direction.asc,“SomeField”);

    它将根据您正在使用的数据库应用limit/rownnum并为您提供记录。

  •  类似资料:
    • 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_subqu

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

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

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

    • 我的ParkingLotEntity: 我的Jpa存储库接口 上面的两个方法运行良好,但问题是我还需要从结果集到第二个方法“GetAllParkingLotCurrentlyWorkingInRegionOfRadius”中的位置的任何停车场之间的距离!在SQL Server中,我的定义函数已经计算出了距离。方法2的结果集是成功的,但没有返回距离(这是我的需要),只是一组parkingLotEnt

    • 我有一个jena查询,比如,我想在结尾处添加一个限制为,使用jena ARQ向SPARQL查询添加可选子句的方法不起作用,因为没有类的ElementLimit类型,而且我也不想进行字符串操作,因为可能存在现有的limit子句,在这种情况下,我想更改现有子句的界限。