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

SpringBoot2.6+PostgreSQL15+Hibernate5.7下@Column注解失效问题咨询

解决Spring Boot+Hibernate中@Column字段名配置不生效的问题

你的问题根源在于Spring Boot默认的Hibernate物理命名策略会自动将驼峰格式的字段名转换为下划线分隔的小写格式,即使显式通过@Column(name)指定了字段名也会被转换,导致验证时Hibernate查找的是is_enabled而非你配置的isEnabled。以下是具体解决方法:

  • 配置标准物理命名策略
    在Spring Boot配置文件中添加以下配置,让Hibernate完全遵循你在@Column中指定的字段名,不做自动转换:
    对于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
    
  • 核对数据库字段名的大小写规则
    PostgreSQL的字段名大小写规则需要注意:

    • 如果数据库字段是通过双引号创建的(如CREATE TABLE analytics ("isEnabled" BOOLEAN NOT NULL)),字段名会保留大小写,此时必须保证Hibernate使用的名称与之一致;
    • 如果创建表时未使用双引号,PostgreSQL会自动将字段名转为小写(即is_enabled),这种情况下你也可以直接修改@Column(name = "is_enabled")来匹配数据库字段。
  • 验证修复效果
    重启应用后,Hibernate的schema验证会使用你指定的isEnabled字段名匹配数据库,不会再抛出missing column [is_enabled]的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:20:38