2013-02-12 66 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都是用於描述一個雙向關係的雙方的同一概念的一部分。

如果您希望關係是單向的 - 即其中一個實體不能遍歷另一個實體,則可以使用其中一個註釋。要決定哪一個,你將不得不決定哪個實體應該知道關係,哪些不應該。

但通常你想要一個雙向關係 - 那麼你使用兩者。

相關問題