休眠/ jpa double与一个实体的双向一对一关系

时间:2018-11-20 19:05:28

标签: java hibernate spring-boot jpa orm

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

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。 但这导致从“详细信息”到“公司”的关系不起作用。

关于如何最好地映射此图的任何建议?

编辑:将类型添加到详细信息

1 个答案:

答案 0 :(得分:0)

您必须定义mappedBy属性,该属性将说明我不是下面的所有者。

public class Details{
    @OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL, 
                  fetch = FetchType.LAZY, optional = false)
    private Company company;
}