Spring Boot Jpa 表名小寫轉大寫


    <p>今天在使用SpringBoot整合Hibernate后創建表,表名為小寫,而在linux下,mysql的表名是區分大小寫的,因此在我的數據表中,就出現了兩個一樣的表</p><p>act_id_user 和&nbsp; ACT_ID_USER<br></p><p>本來為設置了注解的表名是大寫的</p><pre class="brush:bash;toolbar:false">@Table(name="ACT_ID_USER")</pre><p>經過查詢資料發現,修改/etc/my.cnf的配置,使得mysql不區分大小寫是無效的</p><p>最后發現,我們可以在 application.properties里面添加如下內容即可</p><pre class="brush:bash;toolbar:false">spring.jpa.hibernate.naming.physical-strategy&nbsp;=&nbsp;cn.studyBoot.dao.strategy.UpperTableStrategy</pre><p>UpperTableStrategy類的內容如下<br></p><pre class="brush:java;toolbar:false">import&nbsp;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.0

那么配置里的內容應該是

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

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




如果您覺得本文章對您有用,也為了更好的運營博客,您可以點擊這里捐助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM