gpt4 book ai didi

java - JPQL 中的 LIMIT 子句替代方案是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:03:03 25 4
gpt4 key购买 nike

我正在使用在 JPQL 中实现的 PostgreSQL 查询。

这是一个运行良好的示例原生 psql 查询,

SELECT * FROM students ORDER BY id DESC LIMIT 1;

JPQL 中的相同查询不起作用,

@Query("SELECT s FROM Students s ORDER BY s.id DESC LIMIT 1")

Students getLastStudentDetails();

好像 LIMIT 子句在 JPQL 中不起作用。

根据 JPA 文档,我们可以使用 setMaxResults/setFirstResult,谁能告诉我如何在上面的查询中使用它?

最佳答案

您使用的 JPQL 不支持这样的限制结果。使用原生 JPQL 时,您应该使用 setMaxResults 来限制结果。

但是,您使用的是 Spring Data JPA,这基本上使它很容易做到。见 here在有关如何根据查询限制结果的引用指南中。在您的情况下,find 方法将完全符合您的要求。

findFirstByOrderById();

您还可以在查询中使用 Pageable 参数,而不是 LIMIT 子句。

@Query("SELECT s FROM Students s ORDER BY s.id DESC")
List<Students> getLastStudentDetails(Pageable pageable);

然后在您的调用代码中执行类似的操作(如引用指南中的 here 中所述)。

getLastStudentDetails(PageRequest.of(0,1));

两者都应该产生相同的结果,而无需求助于普通 SQL。

关于java - JPQL 中的 LIMIT 子句替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com