1. 程式人生 > >springboot中使用hibernate讀取mysql資料庫資料為空。

springboot中使用hibernate讀取mysql資料庫資料為空。

最近在使用springboot連線mysql資料庫的時候,出現了能夠控制檯能列印SQL語句去不能查詢出資料的異常。經過一番修改終於發現原因:

使用jpa連線mysql資料庫的時候在對映類中的命名的問題,例如在User類中,對應資料庫中的user表;如下:

@Entity
@Table(name = "user")
public class User {

   // Fields
   @Id
   @GeneratedValue(strategy= GenerationType.IDENTITY)
   @Column(name = "Id")
   private Integer id;
   @Column(name="userName")
   private String userName;
   @Column(name="upassWord")
   private String upassWord;

}

資料庫中user表的欄位名為Id,userName,passWord;

按照以上的User中的配置是讀不出資料庫中的資料的,並且執行後會在資料庫user中建立另外兩個欄位名;user_name和pass_word;也就是意味著程式查詢不到資料庫中的userName跟passWord欄位,所以會在資料庫中建立程式執行是的欄位名。

原因是jpa預設會把實體類中的大寫屬性值轉換為小寫並且在大寫字母前加一個"_",從列印的SQL語句中可以看出,所以做如下修改:

User類中不變。

@Entity
@Table(name = "user")
public class User {

   // Fields
   @Id
   @GeneratedValue(strategy= GenerationType.IDENTITY)
   @Column(name = "Id")
   private Integer id;
   @Column(name="userName")
   private String userName;
   @Column(name="upassword")
   private String upassWord;

}

將資料庫user表中名改為user_name,pass_word。問題解決。

或者將實體類和資料庫表都改為小寫。再或者將jpa配置修改不做大小寫轉換。