【发布时间】:2020-04-21 05:32:06
【问题描述】:
我知道使用 Spring Data Rest 我可以像这样使用 Pagination 的内置功能
Page<Product> findByCategoryId(@RequestParam("id") Long id, Pageable pageable);
但是,我在项目中使用 Spring mvc @RestController 并希望实现相同的功能 我试过这样:-
Session currentSession = entityManager.unwrap(Session.class);
Query<Product> theQuery = currentSession.createQuery("from Product", Product.class);
theQuery.setFirstResult((pageNumber-1) * pageSize); // This is 0 based
theQuery.setMaxResults(pageSize);
List<Product> dataList = theQuery.getResultList();
return dataList;
它有效,但我没有得到表中记录总数的count。 对于 UI 分页,我需要它。
所以我必须像上面那样每次都先点击 2 个查询,然后再点击 1 个查询来获取记录大小。 (如果记录更新,可能会导致数据同步问题)
或者
SINGLE QUERY
有没有更好的方法来实现这一点【问题讨论】:
-
您不能在单个查询中执行此操作,您需要 2. 1 用于计数,另一个用于页面元素。此外,这不是 Spring Data REST,而是 Spring Data 的基本功能,因此您不需要 Spring Data Rest 即可使用可分页(您也可以将其与纯 Spring Data JPA 一起使用)。
-
好的,谢谢@M。 Deinum
标签: spring spring-boot spring-mvc pagination hibernate-query