我在休眠 4.1.9 中以我喜欢的方式建模外键时遇到了一些问题
我基本上有以下代码:
@Entity
@XmlRootElement
@Table(name="User")
public class UserVO
{
private String email;
@Id
@Column(name="email", unique=true, nullable=false)
@XmlElement
public String getEmail()
{
return this.email;
}
}
和这个:
@Entity
@XmlRootElement
@Table(name="Authentification")
public class AuthentificationVO
{
private String email;
private UserVO user;
@Id
@Column(name="email", unique=true, nullable=false)
@XmlElement
public String getEmail()
{
return this.email;
}
@OneToOne(cascade = CascadeType.ALL)
@ForeignKey(name="user_fk")
public UserVO getUser()
{
return this.user;
}
}
这一切的重点是在两个表中都有一个名为 email 的列,它也应该作为 User 和 Authentification 表的主键。出于某种原因,当我运行它时,Hibernate 坚持要在 Authentification 表中添加一个名为 user_email 的列,但我希望它使用已经存在的名为 email 的列。
我尝试四处寻找解决方案,并尝试使用 mappedBy 注释以及 JoinColumn 来使其正确,但似乎没有任何作用。