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

Spring Boot无法映射PostgreSQL驼峰数据库列如何解决?

解决Spring Boot映射Odoo 17 PostgreSQL驼峰列返回null的问题

问题根源

PostgreSQL默认会将未加双引号的标识符转换为小写,而Odoo创建的驼峰式列名在数据库中是大小写敏感的带引号标识符(比如实际列名是"partidaId"而非partidaid)。当前你的@Column注解中直接写name = "partidaId",Hibernate会自动将其转为小写partidaid,导致无法匹配数据库中的实际列,最终返回null。

解决方案

方案一:给@Column的name属性添加转义双引号

修改所有驼峰列的@Column注解,将列名用双引号包裹(Java字符串中需要用\转义双引号),确保Hibernate原样使用列名:

@Entity
@Table(name="tournment_tournment")
public class GameData {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "\"Id\"")
    private Integer id;

    @Column(name = "\"partidaId\"")
    private String partidaId;

    @Column(name = "izena")
    private String izena;

    @Column(name = "\"IdEnpresa\"")
    private Integer idEnpresa;

    @Column(name = "\"jaiotzeData\"")
    private Date jaiotzeData;

    @Column(name = "puntuazioa")
    private Integer puntuazioa;

    @Column(name = "lanpostua")
    private String lanpostua;

    @Column(name = "jokoa")
    private Integer jokoa;

    @Column(name = "\"partidaData\"")
    private Date partidaData;

    // 其余非驼峰列保持不变
    @Column(name = "create_date")
    private LocalDateTime create_date;
    @Column(name = "write_date")
    private LocalDateTime write_date;
    @Column(name = "create_uid")
    private Integer create_uid;
    @Column(name = "write_uid")
    private Integer write_uid;

/*  Constructor getters and setter*/
}

方案二:全局配置Hibernate命名策略

如果不想逐个修改列注解,可以在Spring Boot配置文件中添加配置,让Hibernate保留标识符的原始大小写:

application.properties:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

application.yml:

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

配置后,@Column中的name值会被原样发送给数据库,无需额外加引号,但要确保所有列名的大小写与数据库中完全一致。

验证

修改完成后重启应用,查询API即可看到驼峰列的正常数据返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:00:02