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

Hibernate查询无结果:User表返回空对象数组问题排查

问题排查与解决方案

从你提供的Hibernate日志可以看到,SQL已经正确查询出了表中所有字段,但返回的实体对象都是空结构,核心原因是实体类属性名与数据库列名的映射不匹配:

  • 数据库表列采用下划线命名(比如full_name、creation_date、updated_date)
  • 实体类对应属性使用驼峰命名(fullName、creationDate、updatedDate)
  • 默认情况下JPA无法自动识别这种驼峰与下划线的映射关系,导致查询到的字段值无法注入到实体属性中,最终序列化输出空对象。

解决办法(二选一即可)

方法一:开启驼峰转下划线自动映射配置

在Spring Boot配置文件中添加以下配置,让Hibernate自动处理驼峰与下划线的转换:

# application.properties
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

如果是旧版本Hibernate,可使用:

spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy

方法二:显式指定列名映射

给实体类中不匹配的属性添加@Column注解,明确指定对应的数据库列名:

@Table(name = "user")
@Entity
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "full_name")
    private String fullName;

    private String username;
    private String password;
    private String email;
    
    @Column(name = "creation_date")
    private Date creationDate;
    
    @Column(name = "updated_date")
    private Date updatedDate;
}

配置完成后重启服务,重新请求/api/user/list接口,就能得到包含正确字段值的响应结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:40:47