为什么Spring数据的查询构建器不能用于限制查询结果?

时间:2015-05-27 08:21:53

标签: java spring-data

上下文

我已经定义了一个存储库接口(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

我还没有找到任何线索。

1 个答案:

答案 0 :(得分:1)

这是版本。

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

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