如何使用 QueryDSL 在 Spring Data JPA 中使用 order by 和 Limit

Posted

技术标签:

【中文标题】如何使用 QueryDSL 在 Spring Data JPA 中使用 order by 和 Limit【英文标题】:How to use order by and Limit in Spring Data JPA using QueryDSL 【发布时间】:2011-09-15 10:14:10 【问题描述】:

我在我的项目中使用带有 RDBMS 的 Spring Data JPA。我有一个要求,我必须从具有最新日期的表中从数据库中获取一条记录。为此,我需要使用限制和按函数排序或使用子查询。但是,我想知道我是否不想使用 NamedQuery 有没有一种方法可以使用 Spring Data JPA 和 QueryDSL 来实现。

【问题讨论】:

【参考方案1】:

QueryDslPredicateExecutor.findAll(Predicate predicate, Pageable pageable) 不应该为您解决问题吗?您可以提交new PageRequest(0, limit),从而取回第一个limitresults。

【讨论】:

感谢您的回答。我确实找到了。它返回一个列表,但工作得很好。 @Olver Gierke 唯一的问题是它运行了一个不必要的查询来获取计数。在这些情况下,我只使用 QueryDSL,但 LimitOne 语法会很酷。发表建议here 如果您的返回类型为 List 而不是 Page,则不会。 在 QueryDslJpaRepository 的情况下,只有一种方法,它始终运行计数查询。还有另一种解决方法吗? @OliverGierke【参考方案2】:

如何使用 MIN 和 MAX 函数来实现这一点。

SELECT MAX(objDate) FROM Object

【讨论】:

我希望不使用任何命名查询。通过使用名称查询非常简单,但我想知道是否有办法解决这个问题。

以上是关于如何使用 QueryDSL 在 Spring Data JPA 中使用 order by 和 Limit的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Querydsl 和 Spring Data 轻松实现“REST API 查询语言”来过滤实体?

如何将 spring 数据排序转换为 querydsl OrderSpecifier?

如何使用 querydsl 测试更新?

如何使用 QueryDSL 构建 GenericDao?

Spring 数据规范或 QueryDSL

使用 QueryDSL 使用 Spring Data MongoDB 查询 DBRef