【问题标题】:hibernate/jpa double OneToOne Bidirectional Relationship to one entityhibernate/jpa double OneToOne 与一个实体的双向关系
【发布时间】:2019-04-23 07:15:35
【问题描述】:

我有以下结构,我不知道如何放入正确的休眠映射。

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。 但这会导致 Details 与 Company 的关系不起作用。

任何人对如何最好地映射这个有任何建议吗?

编辑:向详细信息添加类型

【问题讨论】:

    标签: java hibernate spring-boot jpa orm


    【解决方案1】:

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

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

    【讨论】:

    • 这仅适用于 detailsX 不适用于 detailsY,我遇到的问题是其中之一
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多