请您帮我使用JPA Query为SQL创建QueryDSL构造。我正在使用4.1.3。
SELECT * FROM (SELECT a FROM b WHERE a.z = 1) WHERE rownum <=1;
提到的解决方案对我不起作用QueryDSL - add subquery into FROM statement
提前致谢。
答案 0 :(得分:0)
以下查询:
SELECT a FROM b WHERE a.z = 1
没有任何order by
子句,因此将应用默认排序。根据{{3}} SO回答,不会预测排序。所以,我建议添加order by
子句。
如果这仅是一个示例,并且实际查询包含order by
,那么您可以在单个查询中实现类似的逻辑;而不是将其包装到另一个查询中并获得第一行,例如(SELECT a FROM b WHERE a.z = 1 order by z)
与rownum
之类的内容。以下是通过JPA方式执行此操作的步骤:
PagingAndSortingRepository
,因为它已有一些方法)findBy()
参数的Pageble
方法(以及z),它看起来像这样:public List<T> findByZ(int z, Pageable pageable)
使用Z
和PageRequest
来呼叫,例如:
final PageRequest page1 = new PageRequest(
0, 1, Direction.ASC, "somefield"
);
它将根据您正在使用的数据库应用limit/rownnum
并为您提供记录。