幾天在用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
對於PhysicalNamingStrategyStandardImpl有DefaultNamingStrategy的效果,對於SpringPhysicalNamingStrategy有ImprovedNamingStrategy的效果。
最終將properties改爲以下,成功恢復到了之前的配置
db1.mysql.jpa.hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy