Spring Boot Jpa 表名小寫轉大寫

今天在使用SpringBoot整合Hibernate後建立表,表名爲小寫,而在linux下,mysql的表名是區分大小寫的,所以在個人數據表中,就出現了兩個同樣的表html

act_id_user 和  ACT_ID_USER
java

原本爲設置了註解的表名是大寫的mysql

@Table(name="ACT_ID_USER")

通過查詢資料發現,修改/etc/my.cnf的配置,使得mysql不區分大小寫是無效的linux

最後發現,咱們能夠在 application.properties裏面添加以下內容便可spring

spring.jpa.hibernate.naming.physical-strategy = cn.studyBoot.dao.strategy.UpperTableStrategy

UpperTableStrategy類的內容以下
sql

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

public class UpperTableStrategy extends PhysicalNamingStrategyStandardImpl {

    /**
    *
    */
    private static final long serialVersionUID = 1L;
    @Override
    public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
        // 將表名所有轉換成大寫
        String tableName = name.getText().toUpperCase();
         
        return name.toIdentifier(tableName);
    }
    
    @Override
    public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
        String colnumName = name.getText().toUpperCase();
        return name.toIdentifier(colnumName);
    }
}

須要注意的是,若是您的hibernate版本不是大於5.0bash

那麼配置裏的內容應該是app

spring.jpa.hibernate.naming-strategy=cn.studyBoot.dao.strategy.UpperTableStrategy

同時UpperTableStrategy這個類繼承的是ImprovedNamingStrategy,而且重寫相應的方法便可ide


若是您以爲本文章對您有用,也爲了更好的運營博客,您能夠點擊這裏捐助
相關文章
相關標籤/搜索