使用SpringBoot整合Hibernate后创建表,表名总为小写,而注解是大写
@Table(name="USER")
怎么办呢?
我们可以在 application.properties里面添加如下内容即可
spring.jpa.hibernate.naming.physical-strategy = cn.studyBoot.dao.strategy.UpperTableStrategy
UpperTableStrategy类的内容如下
package tz.lion.utils;
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;
@SuppressWarnings("static-access")
@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
String tableName = name.getText();
return name.toIdentifier(tableName); //转表名
}
@SuppressWarnings("static-access")
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
String colnumName = name.getText();
return name.toIdentifier(colnumName);//转字段名
}
}
需要注意的是,如果您的hibernate版本不是大于5.0
那么配置应该是
spring.jpa.hibernate.naming-strategy=cn.studyBoot.dao.strategy.UpperTableStrategy
UpperTableStrategy这个类继承的是ImprovedNamingStrategy,并且重写相应的方法ok