Java 如何选择以N计数为参数的前N条记录

Java 如何选择以N计数为参数的前N条记录,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,我希望在repository接口中有一个简单的JPA方法,可以将N定义为参数: List<Messages> findTopCountByStatusEquals(int count, String status); 列出findTopCountByStatusEquals(整数计数、字符串状态); 这不起作用,我只能使用预定义的顶部计数: List<Messages> findTop10ByStatusEquals(String status); 列出statu

我希望在repository接口中有一个简单的JPA方法,可以将N定义为参数:

 List<Messages> findTopCountByStatusEquals(int count, String status);
列出findTopCountByStatusEquals(整数计数、字符串状态);
这不起作用,我只能使用预定义的顶部计数:

List<Messages> findTop10ByStatusEquals(String status);
列出statusequals(字符串状态)查找的选项10b;
是否可以将Top count作为此项的运行时参数?

根据,它不可能按照您的描述执行,但您可以将其作为参数而不是int来实现结果

@Repository
public interface MessageRepository{
     List<Messages> findByStatusEquals(Pageable pageable, String status);
}

}

如果使用java8,您可以在存储库接口中以更好的方式实现这一点

List<Messages> findByStatus(String status, Pageable pageable);

default List<Messages> findTopCountByStatusEquals(int count, String status) {
  return findByStatus(status, PageRequest.of(0, count));
}
列出findByStatus(字符串状态,可分页);
默认列表findTopCountByStatusEquals(整数计数、字符串状态){
返回findByStatus(状态,PageRequest.of(0,count));
}

这将使用java8默认方法来完全匹配您想要的内容。

您可以使用可分页的请求来实现这一点
private Pageable createPageRequest() {
    return new PageRequest(0, 
        10, 
        new Sort(Sort.Direction.DESC, "messageBody")
                .and(new Sort(Sort.Direction.ASC, "someOtherField"));
);
List<Messages> findByStatus(String status, Pageable pageable);

default List<Messages> findTopCountByStatusEquals(int count, String status) {
  return findByStatus(status, PageRequest.of(0, count));
}