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

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

解决方法

  1. 启用正确的物理命名策略
    把注释掉的physical-strategy配置取消注释,确保配置生效:

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

    这个策略会严格遵循你在@Table注解中指定的表名,不会自动将驼峰命名转换为下划线分隔的格式。

  2. 检查配置优先级与覆盖问题

    • 确认没有其他配置文件(如application.yml)中的同名配置覆盖了当前设置
    • 注意Spring Boot 2.x及以上版本已废弃spring.jpa.hibernate.naming-strategy,统一使用physical-strategy和implicit-strategy来控制命名规则
  3. 适配数据库大小写敏感设置(针对MySQL)
    如果使用MySQL,默认的lower_case_table_names参数可能会将表名转换为小写。若需要保留驼峰格式的表名:

    • Linux环境:在MySQL配置文件my.cnf中添加lower_case_table_names=2,重启数据库后生效(此设置会保留表名的大小写格式,但存储时转为小写,查询不区分大小写)
    • Windows环境:默认lower_case_table_names=1,会强制转换为小写,若需保留大小写需修改配置并重启服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:26:37