Spring Boot 将JPA规范与分页相结合

ygya80vv  于 2022-12-04  发布在  Spring
关注(0)|答案(2)|浏览(146)

我有一个JPA规范,需要一分为二,但也支持后端分页。我不知道如何完成这一点。
例如,我有两种类型的Employess,一种是Teachers,另一种是Carers。我需要对这两种类型执行过滤搜索(精确搜索),并返回一个支持分页的联合响应。虽然我知道如何执行这两个请求,但我不知道在结合JPA规范时如何处理分页。有什么提示吗?

class EmployeeEntity {
  private Long id;
  private EmployeeType type;
  private String name;

}
62lalag4

62lalag41#

您是否尝试过JpaRepositoryListPagingAndSortingRepositoryPagingAndSortingRepository,因为它们允许分页,并且创建findAllByType(...)等方法可能会解决您的问题。为了组合结果,您可以使用HQL类型查询来编写单个查询或创建2个查询到DB,并在作为结果返回之前将它们放在单个列表/集合中。

b09cbbtk

b09cbbtk2#

您可以使用标准API处理具有多个规范的分页。例如:

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(EmployeeEntity.class, "employee");

现在,假设您要按EmployeeType(某个不同的实体)筛选Employee:

detachedCriteria.createAlias("employee.type", "employeeType");
detachedCriteria.add(Restrictions.eq("employeeType.name", string (example: "Teachers")));

类似的方法你可以添加更多的规范,而对于分页,你可以这样做:

Integer pageNumber = (Integer.valueOf(page_number)-1) * 10;

然后您可以使用以下方法传递所有这些数据:

resultList = findByCriteria(detachedCriteria,pageNumber,page_size);

它将根据规范返回结果,并根据page_number和page_size进行分页

相关问题