Spring Boot中JPA实体@Table(name)注解生成表名异常
Spring Boot JPA实体表名生成异常问题解决
问题情况
创建了DriverMaster实体类,通过@Entity和@Table(name = "driverMaster")指定目标表名,但数据库中生成的表名却是driver_master。实体类代码如下:
@Entity @Table(name = "driverMaster") @Data public class DriverMaster { // Attributes and getters/setters }
已尝试以下配置(均处于注释状态,未生效):
#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl #spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy #spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl #spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy
解决方法
启用正确的物理命名策略
把注释掉的physical-strategy配置取消注释,确保配置生效:spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl这个策略会严格遵循你在
@Table注解中指定的表名,不会自动将驼峰命名转换为下划线分隔的格式。检查配置优先级与覆盖问题
- 确认没有其他配置文件(如
application.yml)中的同名配置覆盖了当前设置 - 注意Spring Boot 2.x及以上版本已废弃
spring.jpa.hibernate.naming-strategy,统一使用physical-strategy和implicit-strategy来控制命名规则
- 确认没有其他配置文件(如
适配数据库大小写敏感设置(针对MySQL)
如果使用MySQL,默认的lower_case_table_names参数可能会将表名转换为小写。若需要保留驼峰格式的表名:- Linux环境:在MySQL配置文件
my.cnf中添加lower_case_table_names=2,重启数据库后生效(此设置会保留表名的大小写格式,但存储时转为小写,查询不区分大小写) - Windows环境:默认
lower_case_table_names=1,会强制转换为小写,若需保留大小写需修改配置并重启服务
- Linux环境:在MySQL配置文件
内容的提问来源于stack exchange,提问作者sandeep kande
相关产品推荐
相关产品推荐

