首页 > 编程语言 > 详细

Spring Boot Jpa 表名小写转大写

时间:2019-05-20 16:32:33      阅读:501      评论:0      收藏:0      [点我收藏+]

今天在使用SpringBoot整合Hibernate后创建表,表名为小写,而在linux下,mysql的表名是区分大小写的,因此在我的数据表中,就出现了两个一样的表

act_id_user 和  ACT_ID_USER

本来为设置了注解的表名是大写的

@Table(name="ACT_ID_USER")

经过查询资料发现,修改/etc/my.cnf的配置,使得mysql不区分大小写是无效的

最后发现,我们可以在 application.properties里面添加如下内容即可

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

UpperTableStrategy类的内容如下

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.0

那么配置里的内容应该是

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

同时UpperTableStrategy这个类继承的是ImprovedNamingStrategy,并且重写相应的方法即可


如果您觉得本文章对您有用,也为了更好的运营博客,您可以点击这里捐助

Spring Boot Jpa 表名小写转大写

原文:https://www.cnblogs.com/jpfss/p/10894495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!