Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题

几天在用spring boot开发项目, 在开发的过程当中遇到一个问题hibernate在执行sql时,总会提示表不存在。java

寻找以后发现, 建表时,采用默认设置。hibernate会把大写统一转换成下划线加小写。且 mysql在 linux下 大小写敏感。mysql

解决:linux

1. 尝试修改mysql的cnf文件,改为不区分大小写。修改完成以后发现问题并无解决,还产生了新的问题,表名不管大小写都失败了。spring

2. 数据库层面修改没有效果, 表结构和表名不能修改,那只能经过代码实现来解决此问题了。sql

 

原来是Hibernate5.1相关配置变了。数据库

参考:http://412887952-qq-com.iteye.com/blog/2315686spa

参考:http://stackoverflow.com/questions/32165694/spring-hibernate-5-naming-strategy-configurationhibernate

hibernate.ejb.naming_strategy将再也不被支持,而是被替换成了两个属性:
hibernate.physical_naming_strategy
hibernate.implicit_naming_strategycode

对于physical_naming_strategy有两个经常使用的配置:orm

org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 

对于PhysicalNamingStrategyStandardImpl有DefaultNamingStrategy的效果,对于SpringPhysicalNamingStrategy有ImprovedNamingStrategy的效果。

 

 

最终将properties改为以下,成功恢复到了之前的配置

db1.mysql.jpa.hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
相关文章
相关标签/搜索