我正在使用在 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
,谁能告诉我如何在上面的查询中使用它?
原文由 Madhu 发布,翻译遵循 CC BY-SA 4.0 许可协议
您使用的 JPQL 不支持这样的限制结果。使用原生 JPQL 时,您应该使用
setMaxResults
来限制结果。但是,您使用的是 Spring Data JPA,这基本上使它很容易做到。请参阅参考指南中的 此处,了解如何根据查询限制结果。在您的以下情况下, find 方法将完全按照您的要求进行。
您还可以在查询中使用
Pageable
参数,而不是LIMIT
子句。然后在您的调用代码中执行类似 的 操作(如参考指南中所述)。
两者都应该产生相同的结果,而无需求助于普通 SQL。