【问题标题】:Why does Spring data's query builder not work for limiting query results?为什么 Spring data 的查询生成器不能用于限制查询结果?
【发布时间】:2015-08-09 05:04:45
【问题描述】:

上下文

我已经定义了一个存储库接口(JpaRepository),我想限制查询结果 (documentation)。 我需要第一个结果,并且我不喜欢使用分页来限制查询大小。我宁愿使用 Spring Data 存储库基础架构中内置的查询构建器机制来约束对存储库实体的查询。

细节

我正在使用属性遍历和静态排序以及限制结果来构建查询。除了限制结果之外,这一切都有效。

起初我认为限制查询失败的原因是它们可能无法很好地配合使用。然后我将其剥离以仅限制结果并且它没有按预期工作。

剥离它以限制我尝试过的查询结果后:

  • EntityName findTop , queryFirst - 但是查询结果返回多个元素。需要将其声明为 List 而不是 EntityName findTopBy...,如文档中所示
  • queryFirst1ByOrderBySomePropertyDesc、findTopByOrderBySomePropertyDesc、findFirstByProperty(property) 等。

它始终适用于属性表达式或静态排序,但忽略结果。

这可能不适用于所有数据库系统吗? (我使用的是 Oracle Database 11G 第 2 版)。

或者它可能是数据 jpa 版本?我使用 spring-boot-starter-data-jpa,它有 spring-data-jpa 1.5.2.RELEASE 和 spring-data-oracle 和 spring-data-jdbc-core 1.0.0

我还没有找到任何线索。

【问题讨论】:

    标签: java spring-data


    【解决方案1】:

    这是版本。

    原来我有一个较旧的 Spring Data JPA 版本 (1.5.2) 以及仅在 Spring Data JPA 1.7.0 之后引入的 Top 和 First 关键字。

    我最终将分页应用于我的查询(使用 Pageable 方法参数)。

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2019-06-28
      • 1970-01-01
      • 2021-02-13
      • 2017-12-13
      • 2020-04-08
      相关资源
      最近更新 更多