【问题标题】:Why using a @Many-to-one in JPA entity relationships?为什么在 JPA 实体关系中使用 @Many-to-one?
【发布时间】:2013-02-12 13:06:35
【问题描述】:

我的问题可能看起来很傻。我是 JPA 的新手,并试图理解它的基本概念。我发现那里可以使用@Many-to-one 实体关系。我的问题是为什么有人想要在有@One-to-many 关系时使用它? 我的意思是,拥有后者就足以了解关系并发送查询对吗? 如果不是请解释。也许我对这两种关系的看法是完全错误的。请提供一个场景作为示例,以便我更好地理解。 谢谢

【问题讨论】:

    标签: java jakarta-ee jpa javabeans


    【解决方案1】:

    OneToMany 用于映射集合。如果您希望这种关系是双向的,那么您需要在另一侧添加一个ManyToOne 映射。

    使用 Hibernate 映射:Person N 1 地址

    <class name="Person">
        <id name="id" column="personId"/>
        <many-to-one name="address" column="addressId"/>
    </class>
    
    <class name="Address">
        <id name="id" column="addressId"/>
        <set name="people">
            <key column="addressId"/>
            <one-to-many class="Person"/>
        </set>
    </class>
    

    ManyToOne 也可用于映射 2 个对象之间的依赖关系。在这种情况下,如果您希望关系是双向的,则需要在另一侧添加 OneToOne 映射。

    使用 Hibernate 映射:Person 1 1 Address

    <class name="Person">
        <id name="id" column="personId"/>
        <many-to-one name="address" column="addressId" unique="true"/>
    </class>
    
    <class name="Address">
        <id name="id" column="addressId"/>
       <one-to-one name="person" property-ref="address"/>
    </class>
    

    【讨论】:

      【解决方案2】:

      @ManyToOne@OneToMany 都是同一概念的一部分,用于描述单个双向关系的两侧。

      如果您希望关系是单向的 - 即其中一个实体不能遍历到另一个,您可以使用其中一个注释。要决定哪一个,您必须决定哪个实体应该知道关系,哪个不应该。

      但通常您需要双向关系 - 然后您同时使用两者。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        相关资源
        最近更新 更多