You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot分页接口返回空内容问题排查求助

Spring Boot分页查询广告接口返回空content排查方案

问题现象

Postman调用分页查询广告接口返回200状态码,但content字段为空数组;返回的Page结构中totalElements为5(说明匹配到5条数据),但numberOfElements为0,当前页码number是1,每页大小size是10。

排查步骤与解决方案

1. 分页页码索引不匹配(最直接原因)

Spring Data JPA的分页索引从0开始,结合返回数据:

  • 总数据量5条,每页10条,仅第0页有数据
  • 调用时传入page=1,实际请求的是第二页,自然没有数据

验证/解决:

  • 调用接口时传入page=0,查看content是否返回5条数据
  • 如果业务要求前端传入从1开始的页码,需在Controller中转换参数:
    @RequestParam(value = "page", defaultValue = "0") int page = page > 0 ? page - 1 : 0;
    

2. 校验查询条件有效性

虽然totalElements=5证明查询条件匹配到数据,但仍需确认:

  • 必填参数category.id和advert_type_id是否对应存在数据的分类/广告类型
  • 价格区间参数price_start和price_end是否未误过滤数据(Service中priceControl方法需确保仅当priceStart != null && priceEnd != null && priceStart > priceEnd时抛出异常)
  • 搜索关键词q是否为空或未误匹配过滤规则

3. 分页工具类逻辑校验

查看分页工具类代码,逻辑无问题:

public Pageable getPageableWithProperties(int page, int size, String sort, String type) {
    Pageable pageable=PageRequest.of(page,size, Sort.by(sort).ascending());
    if(Objects.equals(type,"desc")){
        pageable=PageRequest.of(page,size,Sort.by(sort).descending());
    }
    return pageable;
}

仅需确认sort参数对应Advert实体的合法属性路径(如category.id是否为关联属性的正确写法),排序错误不会导致content为空,仅影响排序顺序。

4. 自定义查询语句验证

Repository的@Query逻辑正确,但可开启SQL日志确认实际执行的SQL:
在application.yml中添加配置:

spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

通过打印的SQL确认查询条件、分页参数是否正确,是否确实查询到5条数据。

内容的提问来源于stack exchange,提问作者Duygu Yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:07:27