【问题标题】:JPA relation OneToManyJPA 关系 OneToMany
【发布时间】:2016-12-30 01:38:04
【问题描述】:

我在想我理解这些关系。但现在..我不确定。我无法添加正确的注释。

我有类成员和关系。

在关系中

private GT_Member Mother;

private GT_Member Father;

private List<GT_Member> children;

一个成员可以作为母亲或父亲在多个关系中(参考他的性别),但他只能在一个关系中作为孩子。

我想将母亲和父亲注释为@OneToMany。

但我不确定是否可以将 List 注释为 @OneToOne ??

【问题讨论】:

    标签: jpa


    【解决方案1】:

    在为您的数据库架构建模正确的实体关系模型和可视化您的 ORM(对象关系模型)时,这似乎是一个问题。

    与其从成员和关系类开始,不如先看看系统中的主要数据实体是什么。以及它们将如何相互关联。 我个人认为 Relation 不会是一个好的 JPA 实体。 成员看起来更像是一个好的实体,可以体现关系 假设一个父亲和一个母亲,一对多似乎是错误的,但由于父亲或母亲可以有多个孩子,正确的注释应该是@ManyToOne。

    Children 绝对是 OneToMany,是的,您可以将 List children 注释为 @OneToMany。

    成员可能具有以下属性:

    @Entity
       public class Member implements Serializable{
        @ManyToOne
        private Member mother;
        @ManyToOne
        private Member father;
        @OnetoMany
        private List<Member> children;
     }
    

    这解决了您的两个用例,并且在这个简单的示例中不需要 Relation 类。 希望这会有所帮助。

    【讨论】:

    • 使用关系实体是因为我想保存有关关系状态的信息。 Donc 我将存储有关所有已婚等的信息。实体关系还有其他字段,例如类型(中性、已婚、未婚夫等...)。
    • 嗯,在实体中建模似乎是一个有趣的问题。您提供的信息越有用。但即使在这种情况下,您也可以避免使用单独的关系实体,方法是将这个多值字段称为 marital-status(单身、已婚、订婚),然后是另一个类型为 Member partner 的字段;这可以是 null(如果 marital-status 是单身),一个实际的 Member(marital-status 是已婚还是订婚)。
    【解决方案2】:

    使用关系实体是因为我想保存有关关系状态的信息。 Donc 我将存储有关所有已婚等的信息。实体关系还有其他字段,例如类型(中性、已婚、未婚夫等...)。

    【讨论】:

    • 请仅在此部分发布答案
    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 2010-10-27
    • 2014-07-30
    • 1970-01-01
    • 2019-02-10
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多