我的问题可能看起来很傻。我是 JPA 的新手,并试图理解它的基本概念。我发现那里可以使用@Many-to-one 实体关系。我的问题是为什么有人想要在有@One-to-many 关系时使用它?我的意思是,拥有后者就足以了解关系并发送查询对吗?如果不是请解释。也许我对这两种关系的看法是完全错误的。请提供一个场景作为示例,以便我更好地理解。谢谢
问问题
199 次
2 回答
1
@ManyToOne
并且@OneToMany
都是用于描述单个双向关系的两侧的同一概念的一部分。
如果您希望关系是单向的 - 即其中一个实体不能遍历到另一个,您可以使用其中一个注释。要决定哪一个,您必须决定哪个实体应该知道关系,哪个不应该。
但通常你想要一个双向关系——然后你同时使用两者。
于 2013-02-12T13:14:30.440 回答
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
在另一侧添加映射。
使用休眠映射: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>
于 2013-02-12T13:44:58.210 回答