在 1.7.0 之前的 Spring Data JPA 版本中,无法限制使用 setMaxResults 的带注释的查询方法返回的结果数。不过,此功能已在 Spring Data JPA 1.7.0 中引入。
自 Spring Data JPA 1.7 起.0(Evans发布列车),可以使用新引入的Top和First关键字来定义自动限制结果的查询方法。例如:
findTop10ByLastnameOrderByFirstnameAsc(String lastname);
Spring Data 会自动将结果限制为您定义的数量(如果省略,则默认为 1)。请注意,结果的排序在这里变得相关,可以通过示例中所示的 OrderBy 子句,也可以通过将 Sort 参数传递给方法。
在 1.7.0 之前的 Spring Data JPA 版本中,分页是使用请求端的 Pageable 接口和结果端的 Page 抽象来处理的。这是一个示例:
public interface UserRepository extends Repository<User, Long> { List<User> findByUsername(String username, Pageable pageable); }
您可以像这样使用此界面:
Pageable topTen = new PageRequest(0, 10); List<User> result = repository.findByUsername("Matthews", topTen);
如果您需要有关结果的更多信息(例如它是哪一页或有多少页)总计),使用 Page 作为返回类型:
public interface UserRepository extends Repository<User, Long> { Page<User> findByUsername(String username, Pageable pageable); }
这将触发要执行的查询的计数投影以确定元素的总数。
以上是如何在 Spring Data JPA 中限制查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!