2013-02-12 69 views
1

我的问题可能看起来很愚蠢。我对JPA很陌生,试图理解它的基本概念。我发现有一个@多对一的实体关系可以在那里使用。我的问题是为什么有人想要使用这个@ @一对多关系? 我的意思是,拥有后者足以了解关系并发送正确的查询?如果没有请解释,请致电 。也许我对这两个关系的想法是完全错误的。请提供一个场景作为例子,以便我更好地理解。 谢谢为什么在JPA实体关系中使用@多对一?

回答

1

OneToMany用于映射集合。如果你想这个关系是双向的,那么你需要在另一端添加一个ManyToOne映射。

随着Hibernate映射:人Ñ< ---> 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也可以用于映射两个对象之间的依赖性。在这种情况下,如果您希望关系是双向的,那么您需要在另一端添加一个OneToOne映射。

随着Hibernate映射:第1个人< ---> 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> 
1

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

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

但通常你想要一个双向关系 - 那么你使用两者。