在Spring Repository中获取Pageable自定义查询的总行数

15

我这样实现分页:

List<Products> products = productRepository.findAllProducts(productsRequest.getInitiatorType(), "ACTIVE",
      new PageRequest(page, 100, Sort.Direction.DESC, "insertDate"));

但是我该如何获取此查询的总大小?只有像这样的重复查询吗?
  @Query("SELECT t FROM Products t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2")
  List<OpcClProducts> findAllOpcClProducts(String senderId, String status, Pageable pageable);


  @Query("SELECT COUNT(t) FROM Products t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2")
  long getTotalCount(String senderId, String status);

并且调用2个查询:totalCount和data吗?


4
请将您的对象更改为 Page<Products>。 - Noixes
2
顺便提一下,将实体重命名为“Product”。一个实例就是一个产品。字符串没有被命名为“Strings”,因为每个实例都是一个字符串。 - JB Nizet
@andrewTobilko 谢谢你提醒我!我对那个不是100%确定 ^^' - Noixes
1
@ip696请看Noixes提供的答案。它解决了问题吗? - Andrew Tobilko
所以,有一个大脑与我的思维方式相同。 - Paramvir Singh Karwal
1个回答

22

尝试将您的对象更改为

Page<Products> p .. 

p应该包含您要查找的信息。 :) (因为他们要求我这样发帖)


1
我还没有检查过,但我相信这是正确的答案。+1 - Andrew Tobilko
1
page.getTotalElements() 将会给你查询返回的行数 page.getTotalPages() 将会给你基于页面大小(你配置的每页项目数)的总页数 - Hus Mukh
在我的搜索结果中排名第一的绝对有用的信息... - aswzen
使用Spring Boot Data JDBC,如果您的接口扩展了PagingAndSortingRepository并且查询返回多个结果,则会出现org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 50的异常。 - jbaranski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接