我有一個Person和Address類之間一對多的關係。根據Hibernate doc的許多方面總是關係的擁有方,也就是說許多方面不應該定義mappedBy元素。一對多的mappedBy
在我的情況下一個人可以有很多地址,所以Person對應於一邊而Address對應多邊。如果我沒有在兩個類中定義mappedBy元素,哪個類成爲關係的所有者?
是否所有者表都具有外鍵映射?
我有一個Person和Address類之間一對多的關係。根據Hibernate doc的許多方面總是關係的擁有方,也就是說許多方面不應該定義mappedBy元素。一對多的mappedBy
在我的情況下一個人可以有很多地址,所以Person對應於一邊而Address對應多邊。如果我沒有在兩個類中定義mappedBy元素,哪個類成爲關係的所有者?
是否所有者表都具有外鍵映射?
如果沒有指定的mappedBy,那麼你沒有雙向關係。相反,你會有兩個單向關係。
在一對多關係中,外鍵必須位於所有者表中或獨立的連接表中。你不能有它的一個一個一對多的關係邊桌。這是沒有意義有它一個一面,因爲你不能多值(外鍵引用到許多方面的表)映射到一個行與JPA的一列。
是的,擁有實體的表總是具有外鍵的表。
JPA規範的編寫者選擇將該實體稱爲關係的「所有者」,這是一種恥辱。這個名字與聚合的術語相沖突,這通常會同時使用。例如,你的情況,該人擁有的地址(如果你刪除一個人,你會刪除他們所有的地址;如果你刪除地址,你就不會刪除該公司擁有它的人)。然而,這是該公司擁有的人事和地址之間的關係的地址。
真的,「擁有方」僅僅意味着「具有實際定義用於記錄關係的外鍵的表的一面」。
謝謝湯姆,現在我很清楚在業主術語中的映射。 – Junaidaj
非常感謝米克。 – Junaidaj