MySQL Workbench是否会自动转换驼峰命名属性为下划线格式?
问题答复
这种现象不属于正常情况,核心原因是JPA实现层(Spring Data JPA默认用Hibernate)的配置覆盖了@Column注解的显式字段名配置,自动触发了驼峰转下划线的命名转换。
常见触发原因
- 导包错误:
@Column注解没有导入JPA标准包,错导入了第三方ORM框架的同名注解,导致框架无法识别你配置的name = "userId"参数。 - 全局命名策略配置问题:Spring Boot默认的
SpringPhysicalNamingStrategy会自动将Java驼峰属性名转换为下划线分隔的数据库命名字段,部分版本下该策略的执行优先级高于字段注解配置,会直接覆盖你在@Column里写的字段名。
修复方案
- 先排查导包:确认
@Column导入的是jakarta.persistence.Column(JDK8及更早的旧版本为javax.persistence.Column),排除导包错误。 - 调整命名策略配置:如果要严格遵循
@Column注解指定的字段名,在项目配置文件中修改Hibernate物理命名策略为标准实现,不会做自动命名转换,配置示例:
spring: jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
- 如果你本身就想用下划线命名的数据库字段规范,直接把
@Column注解的name参数改成"user_id",和框架自动生成的字段名对齐即可,不需要改全局配置。
注意:Linux环境下MySQL默认区分字段名大小写,Windows环境默认不区分,不管选择哪种命名风格,都要保证注解配置的字段名和数据库实际字段名完全一致,避免运行时抛出字段不存在的异常。
内容的提问来源于stack exchange,提问作者IU Kottahchchi
相关产品推荐
相关产品推荐

