在學習使用jpa的時候發現查詢數據庫的時候有些字段沒有獲取到,都是使用了駝峯命名的多個單詞組成的字段。查看服務打印的log後發現自動生成的查詢語句對於駝峯命名的多個單詞組成的字段連接方式是以"_"連接。比如,在實體裏面的字段是userName,數據庫中的字段也是userName,但是自動生成的sql語句中的字段是user_name,對應不上,所以找不到。
解決方式是在配置文件application.properties中添加如下配置:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
然後在對應的實體字段註解中添加name="數據庫中的字段",如下:
@Column(nullable = false,name = "userName")
private String userName;
這樣就可以配置自動生成的sql語句也是用設置好的字段名了。
其他配置如下:
1.使用自己的命名規則,就是上面提到的
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
2.使用遇到大寫就加"_"的方式,就是默認的那種
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy