我具有以下结构,无法弄清楚如何放入正确的休眠映射。
public class Company{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_x")
private Details detailsX;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_y")
private Details detailsY;
}
和
public class Details{
....
private Type type; //Enum that could be x or y
@OneToOne
private Company company;
}
公司有x的详细信息和y的详细信息。详细信息只能由一家公司在x或y中使用。
在数据库方面,我认为最好的设置是在tbl_company上有2列引用详细信息的Pk。
但这导致从“详细信息”到“公司”的关系不起作用。
有人对如何最好地映射此有任何建议吗?
编辑:将类型添加到详细信息
最佳答案
您必须定义mappedBy
属性,该属性将说我不是下面的所有者。
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}