簡體   English   中英

休眠將以何種方式處理主鍵數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM