我具有以下结构,无法弄清楚如何放入正确的休眠映射。

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;
}

07-24 18:21
查看更多