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

使用JPA Hibernate时数据库及表名首字母未大写的问题求解

解决Hibernate创建数据库/表名首字母未大写的问题

问题根源

  1. 数据库层面:MariaDB/SQL Server默认会将未加引号的标识符(数据库名、表名)转换为小写(MariaDB受lower_case_table_names参数控制,SQL Server默认不区分大小写但存储为小写)。
  2. Hibernate命名策略:默认的PhysicalNamingStrategyStandardImpl不会自动将实体类名转换为首字母大写的格式,且不会为标识符添加引号强制保留大小写。

具体解决步骤

一、处理数据库名大小写

针对MariaDB

  1. 修改数据库配置(需重启服务):
    • 找到my.cnf(Linux)或my.ini(Windows),添加/修改参数:
      lower_case_table_names=0
      

      注意:该参数必须在数据库初始化前设置,若已创建数据库,需先删除再重启服务生效。设置后数据库会严格区分标识符大小写,创建时的大小写会被保留。

  2. 手动创建数据库(无需修改配置):
    先通过SQL命令创建带大小写的数据库(用反引号包裹名称):
    CREATE DATABASE `QLCHTT`;
    
    然后修改JDBC URL,去掉createDatabaseIfNotExist=true:
    <property name="javax.persistence.jdbc.url" value="jdbc:mariadb://localhost:3306/QLCHTT"/>
    

针对SQL Server

SQL Server默认不区分标识符大小写,但存储时会转为小写。需在创建数据库/表时用方引号包裹名称,或修改数据库的排序规则为区分大小写(如SQL_Latin1_General_CP1_CS_AS)。


二、处理表名首字母大写

方法1:全局自定义物理命名策略

创建一个自定义的命名策略类,继承PhysicalNamingStrategyStandardImpl,重写表名转换逻辑:

import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;

public class CustomPhysicalNamingStrategy extends PhysicalNamingStrategyStandardImpl {
    @Override
    public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
        // 将逻辑名称的首字母转为大写,其余保持不变
        String tableName = name.getText();
        if (tableName.length() > 0) {
            tableName = Character.toUpperCase(tableName.charAt(0)) + tableName.substring(1);
        }
        return Identifier.toIdentifier(tableName);
    }
}

然后在persistence.xml中替换原有的命名策略配置:

<property name="hibernate.physical_naming_strategy" value="com.yourpackage.CustomPhysicalNamingStrategy"/>

方法2:在实体类上显式指定表名

如果实体类数量不多,可直接在每个实体类上用@Table注解指定大写的表名:

@Entity
@Table(name = "User")
public class User {
    // ... 实体字段
}

三、验证配置

修改后,设置hibernate.hbm2ddl.auto为create(或create-drop),重启程序,即可看到数据库和表名首字母保持大写。

内容的提问来源于stack exchange,提问作者Sky Herobrine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:04:54