Java Spring Boot Crudepository或JpaRepository-如何通过限制作为参数?

Java Spring Boot Crudepository或JpaRepository-如何通过限制作为参数?,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,我的存储库接口扩展了crudepository: public interface ExampleRepository extends CrudRepository<Example, Long>{ List<Example> findByValidIsTrueLimit(Integer limit); } public interface ExampleRepository扩展了crudepository{ 列出FindByValidDistrueLimit(整

我的存储库接口扩展了
crudepository

public interface ExampleRepository extends CrudRepository<Example, Long>{
    List<Example> findByValidIsTrueLimit(Integer limit);
}
public interface ExampleRepository扩展了crudepository{
列出FindByValidDistrueLimit(整数限制);
}
我想将结果列表限制到指定的限制,如SQL查询中的
limit

然而,我得到:

原因:org.springframework.beans.factory.BeanCreationException: 创建名为“exampleRepository”的bean时出错:调用init 方法失败;嵌套异常为java.lang.IllegalArgumentException: 未能创建查询方法公共摘要未找到属性限制 对于类型


如何将作为参数传递的限制添加到
crudepository
方法?

您可以向方法签名添加一个
Pageable
。例如

List findbyvaliddistrue(可分页p)

用法:

List ex=repo.findByValidIsTrue(新页面请求(0,10))

来自spring文档():

查询方法的结果可以通过关键字first或top进行限制,这些关键字可以互换使用。可以向top/first追加可选的数值,以指定要返回的最大结果大小。如果省略该数字,则假定结果大小为1

因此,对于固定限制
N
您可以使用
List findTopNByValidIsTrue()

对于限制的可变值,应使用:

Page findByValidDistributue(可分页可分页);
List result=repository.findByValidIsTrue(新页面请求(0,N)).getContent();
您可以使用,它将为您提供一个
页面
,然后您可以从中获取所需的数据

 Page<Example> findByValidIsTrue(Pageable pageable);
Page findByValidDistributue(可分页可分页);
然后使用以下命令调用它:-

PageRequest req=新的PageRequest(0,10);//我只想要10张唱片
第Page页=FindByValidDistrue(请求)
List nRecords=page.getContent();

注意:如果在调用
FindByValidDistributueLimit
时未传递
PageRequest
对象,默认情况下,它将为您提供前20条记录。

getContent()不是必需的,您可以直接检索列表。getContent()不是必需的,您可以直接检索列表。
 Page<Example> findByValidIsTrue(Pageable pageable);
    PageRequest req = new PageRequest(0,10); // I just want 10 record
    Page<Example> page =  findByValidIsTrue(req )
    List<Example> nRecords = page.getContent();