Quarkus 2.14.1.Final配置CamelCaseToUnderscoresNamingStrategy无效,求排查
问题排查与解决方案
1. 移除手动添加的@Column注解
你的实体类中显式添加了@Column(name = "user_name"),这会直接覆盖Hibernate命名策略的自动映射规则——无论配置什么命名策略,Hibernate都会优先使用注解指定的列名。所以第一步必须删掉这个注解:
@Entity public class User extends PanacheEntity{ String userName; // 移除@Column注解 }
2. 确认配置的正确性
你使用的配置项是正确的,但需要确保:
- 配置文件为
application.properties(若用YAML格式则对应调整语法),且放置在src/main/resources目录下 - 配置项拼写无误:
quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
3. 检查是否存在冲突配置
如果同时配置了quarkus.hibernate-orm.implicit-naming-strategy,可能会和物理命名策略产生冲突。确保没有设置会覆盖自动驼峰转下划线的隐式命名策略,默认的隐式命名策略是兼容该物理策略的。
4. 版本兼容性验证
Quarkus 2.14.1.Final搭配的Hibernate ORM版本为5.6.x,而CamelCaseToUnderscoresNamingStrategy在Hibernate 5.4+就已支持,因此不存在版本兼容问题。
测试验证
完成调整后,可开启quarkus.hibernate-orm.log.sql=true配置查看执行的SQL语句,此时userName属性应自动映射到数据库的user_name列。
内容的提问来源于stack exchange,提问作者Altafhusen Makandar
相关产品推荐
相关产品推荐

