[英]In what ways will Hibernate Handle Primary Key data
我剛開始在應用程序中使用休眠框架,並且對如何處理主鍵感到困惑。
假設我有一個名為User的實體,如下所示:
@Entity
@Table(name="REGUSER")
public class User {
@Id
private int id;
private String username;
private String password;
private String email;
public User(int id, String username, String password, String email){
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
public User(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + '}';
}
}
將用戶實體注冊到數據庫。 要保留數據的數據表:
| Id | 用戶名| 電郵| 密碼|
但是,當嘗試保存諸如
userA = new User( 0, "NameTest", "MailTest", "PWDTest");
由於會引發ID錯誤,因此不能接受null。
所以我很困惑:
如果在持久化之前已知道用戶ID並將其添加到表中,該用戶ID如何傳遞給參數?
如何不傳遞任何內容作為id,而讓hibernate處理主鍵分配和自動遞增?
非常感謝。
據我所知,通常我們添加@GeneratedValue
批注以使休眠引擎自動分配主鍵字段。 在這種情況下,我們在創建ID時無需分配ID。
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id
public User(String username, String password, String email){
this.username = username;
this.password = password;
this.email = email;
}
User u = User('name', 'pw', 'email@email.com')
session.save(u);
System.out.println(u.id); // the id is automatically assigned after persist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.