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