我有两张桌子:
用户:
user_id(主要)
等..
- 醇>
users_info
id(主要)
user_id(唯一)
等..
我想在user
字段上创建从user_info
到user_id
的oneToOne关系。请注意,它是唯一的但不是主要的。
可以在Hibernate上完成吗?无论我做什么,Hibernate都会尝试使用users_info.id
字段而不是u sers_info.user_id
字段。
@OneToOne(mappedBy="user_id", cascade = {CascadeType.ALL}, fetch=FetchType.LAZY, optional=true)
@JoinColumn (name="user_id")
public UserInfo getUserInfo() { return userInfo; }
public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; }
private UserInfo userInfo;
答案 0 :(得分:2)
为什么你想要一个1-1的映射和代理ID的“唯一”密钥?这是多余的。只需使两个PK相等,因为它是1-1映射。
答案 1 :(得分:2)
在User
你应该:
@OneToOne(mappedBy="user", cascade = CascadeType.ALL, fetch=FetchType.LAZY, optional=true)
public UserInfo getUserInfo() { return userInfo; }
在UserInfo
:
@OneToOne
@JoinColumn(name="user_id")
public User getUser() { return user; }
看看here。这是一对一映射的第二个例子。
答案 2 :(得分:0)
是的,这应该有效。在一对一或多对一中,您在第一个表中有一个主键,在第二个表中有外键。
答案 3 :(得分:0)
映射应该在您定义要加入的表列时起作用。但只有一点我不确定,因为你定义了getter方法的所有注释,所以它将以相同的方式工作。