今天在使用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
若是您以为本文章对您有用,也为了更好的运营博客,您能够点击这里捐助