现在有两个实体类。user 和 userInfo
他们是一对一关联。
请问。如何设置。?
user 为用户账户。积分。信息等。
userInfo 为用户详细信息。地址。真实姓名。电话。等。
请问两个类的注解一对一如何写?
如果通过user如何取得关联的userinfo?
或是userinfo如何取得关联的user?
我的是ssh2.
现在有两个实体类。user 和 userInfo
他们是一对一关联。
请问。如何设置。?
user 为用户账户。积分。信息等。
userInfo 为用户详细信息。地址。真实姓名。电话。等。
请问两个类的注解一对一如何写?
如果通过user如何取得关联的userinfo?
或是userinfo如何取得关联的user?
我的是ssh2.
通常是两种:@JoinColumn,@PrimaryKeyJoinColumn。
使用@JoinColumn注释,@Id可以使用主键生成策略,但主表中会成额外的数据列(字段user_id)
[code="java"]
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
public UserInfo getUserInfo() {
return userInfo;
}
[/code]
使用@PrimaryKeyJoinColumn注释与@JoinColumn相反,主表中不会生成额外的数据列,也不可以使用主键生成策略。其中optional很重要 指定关联属性不能为空,如果想要实现延迟加载就一定要将这个属性设置为false,这是因为JPA需要知道对应的数据是否存在后,才能决定是创建一个"延迟代理"还是"null引用"。
[code="java"]
@OneToOne(fetch = FetchType.LAZY, optional = false)
@PrimaryKeyJoinColumn
public UserInfo getUserInfo() {
return userInfo;
}
[/code]