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

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

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

解决:

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

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

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

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

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

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

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

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
原文地址:https://www.cnblogs.com/zhu573514187/p/9685662.html