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

Spring Boot整合Hibernate查询返回空JSON如何解决

Spring Boot JPA GET接口返回空JSON排查方案

按优先级从高到低查,每步验证过了再往下走:

  • 先看实际执行的SQL结果
    你配置里开了show-sql: true,发GET请求的时候把控制台打印的那条select语句直接复制到MySQL Workbench里跑一下:
    • 如果SQL跑出来本身就是空结果,说明是连接、映射或者数据本身的问题,往下查
    • 如果SQL能查到数据,那就是后端查到了但序列化没输出,直接跳第三步查序列化问题
  • 排查连接、映射和数据问题
    • 驱动版本匹配问题:如果你用的是MySQL 8及以上版本,配置里的旧驱动类com.mysql.jdbc.Driver要换成com.mysql.cj.jdbc.Driver,JDBC连接串后面补全必要参数,避免时区等兼容问题导致查询异常:
      url: "jdbc:mysql://localhost:3306/mydbtest?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8"
      driverClassName: "com.mysql.cj.jdbc.Driver"
      
    • 实体映射问题:你实体类的主键@GeneratedValue没指定策略,MySQL场景下要明确指定自增策略适配,不然主键识别错也会查不到数据:
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
      
      另外注意Linux下MySQL默认表名大小写敏感,确认你库里的表名确实是小写的users,和@Table注解里配置的一致,不然映射到错的空表自然返回空。
    • 数据有效性验证:直接调你写的POST接口插一条测试数据,再调GET看能不能拿到刚插的记录。如果能拿到,说明你之前在Workbench手动插的数据没提交事务,或者插错了库、插错了表。
  • 排查序列化问题
    如果在Controller层打断点,能看到findAllUsers()返回的对象里字段都有值,但接口返回的JSON是空的,基本是Lombok失效导致的:
    • 先确认IDE装了Lombok插件,项目里的Lombok依赖是编译期生效的,不是只在测试或者运行时才加载
    • 临时把User类上的@Data注解去掉,手动给所有字段写getter/setter方法,重启项目再测。如果这时候能正常返回字段值,就是Lombok没生效,重新导下依赖、重启IDE就能解决。

快速判断问题方向:如果接口返回的是空数组[],就是查询环节没拿到数据,优先查第二步的连接、映射、数据问题;如果返回的是字段全为null的对象或者空对象{},就是序列化环节的问题,优先查第三步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:39:15