我正在使用JPA将对象存储在数据库中。我有一个User类,它有一个字段(One to One关系)和一个Password类。当新用户注册时,我希望User类的生成Id也是Password类的id字段。关于如何解决这个问题的任何想法?这是相关的代码......
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy=SEQUENCE,generator="user_id_seq")
@Column(name="user_id")
private int id;
@Column(name="username")
private String username;
@OneToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="user_id")
private Password password;
}
@Entity
@Table(name="passwords")
public class Password {
@Id
//@GeneratedValue ???
@Column(name="user_id")
int userId;
@Column(name="password")
String password;
}
答案 0 :(得分:2)
授予Password
对其父User
的直接引用,并将该字段标记为您的ID:
@Entity
@Table(name="passwords")
public class Password {
@Id
User user;
// ...
}
或者,如果您仍然需要原始userId
字段,请使用@MapsId
:
@Entity
@Table(name="passwords")
public class Password {
@Id
int userId;
@MapsId
@OneToOne
@JoinColumn(name = "user_id")
User user;
// ...
}