對於Spring Data JPA實體屬性映射帶有下劃線的數據庫表的字段沒法查詢的問題

       若是數據庫表的字段名稱帶有下劃線,使用IDEA映射爲實體後:java

 

 1 @Entity
 2 @Table(name = "user_profile")
 3 public class UserProfile {    
 4     @Id    
 5     @GeneratedValue(strategy = GenerationType.IDENTITY)    
 6     private Long User_ID;    
 7     private String User_Name;    
 8     private String Real_Name;    
 9 
10     public UserProfile() {    }    
11 
12     getter... 
13     setter...
14 }

 

       Spring Data JPA查詢時如: 數據庫

            

1  findByUser_ID();   

 

 

 

       會報錯,時由於有下劃線,Spring Data的解析規則爲:框架

       查詢方法以find|read|get開頭(好比 find、findBy、read、readBy、get、getBy),涉及條件查詢時,條件的屬性用條件關鍵字鏈接,要注意的是:條件屬性首字母需大寫。框架在進行方法名解析時,會先把方法名多餘的前綴截取掉,而後對剩下部分進行解析。 spa

好比 findByUserAddressZip()。框架在解析該方法時,首先剔除 findBy,而後對剩下的屬性進行解析,詳細規則以下(此處假設該方法針對的域對象爲 AccountInfo 類型):
先判斷 userAddressZip (根據 POJO 規範,首字母變爲小寫,下同)是否爲 AccountInfo 的一個屬性,若是是,則表示根據該屬性進行查詢;若是沒有該屬性,繼續第二步;
從右往左截取第一個大寫字母開頭的字符串(此處爲 Zip),而後檢查剩下的字符串是否爲 AccountInfo 的一個屬性,若是是,則表示根據該屬性進行查詢;若是沒有該屬性,則重複第二步,繼續從右往左截取;最後假設 user 爲 AccountInfo 的一個屬性;
接着處理剩下部分( AddressZip ),先判斷 user 所對應的類型是否有 addressZip 屬性,若是有,則表示該方法最終是根據 "AccountInfo.user.addressZip" 的取值進行查詢;不然繼續按照步驟 2 的規則從右往左截取,最終表示根據 "AccountInfo.user.address.zip" 的值進行查詢。
可能會存在一種特殊狀況,好比 AccountInfo 包含一個 user 的屬性,也有一個 userAddress 屬性,此時會存在混淆。讀者能夠明確在屬性之間加上 "_" 以顯式表達意圖,好比 "findByUser_AddressZip()" 或者 "findByUserAddress_Zip()"。code

       可是如今的屬性中沒有相似上述 「AccountInfo 包含一個 user 的屬性,也有一個 userAddress 屬性」,因此查詢會出錯對象

  能夠在要用的屬性前加上blog

@Column(name = "列名") 

 

  而後把實體改成ip

 1 @Entity
 2 @Table(name = "eb_user_profile")
 3 public class UserProfile {    
 4     @Id    
 5     @GeneratedValue(strategy = GenerationType.IDENTITY)    
 6     @Column(name = "UserID")    
 7     private Long User_ID;    
 8     @Column(name = "UserName")    
 9     private String User_Name;    
10     @Column(name = "RealName")   
11     private String Real_Name;    
12 
13     public UserProfile() {    }    
14 
15     getter... 
16     setter...
17 }

這時查詢語句就改成:字符串

1  findByUserID();   

 

這樣就解決了這個錯誤get

相關文章
相關標籤/搜索