为什么在JPA实体关系中使用@ Many-to-one?

时间:2013-02-12 13:06:35

标签: java java-ee jpa javabeans

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

2 个答案:

答案 0 :(得分:1)

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

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

但通常你想要双向关系 - 然后你同时使用它们。

答案 1 :(得分: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&lt; ---&gt; 1地址

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