2014-11-22 23 views
1

對於JPA項目,我被要求實施以下情況:一對多vs多對多 - 書籍和作者

一本書可以有很多作者。

另外還有一個UML規定作者可以有很多書,一本書可以有很多作者。

我是初學者,當談到這個問題。 我需要一個多對多的關係(與一個交點表) 或者我需要一個雙向的一對多關係嗎?

也是一對多關係的雙向部分混淆了我。如果有人能用一個很好的例子來解釋這一點。

+0

作者有很多書,一本書有很多作者,所以很顯然是一個ManyToMany關聯:書需要一個作者集,作者需要一個書集。什麼讓你困惑? JPA文檔和Hibernate文檔包含大量示例。 – 2014-11-22 20:04:35

回答

1

雙向關聯允許您在對象空間以及JPA/Hibernate查詢語言中瀏覽此關係的兩側。

在您的示例中,數據庫多對多關聯是強制性的(這意味着您有一本書,一個AUTHOR和一個BOOK_AUTHOR鏈接表)。 Hibernate提供用於映射兩種可能這種關係:而另一個是逆書和作者,每一個有一個@ManyToMany關聯到其他(一個是擁有方:

  1. 你可以用兩個實體建模此一個)

  2. 您可以擁有三個實體:Book,Author和BookAuthor,此時Book與BookAuthor有一個@OneToMany關聯,Author有一個與BookAuthor的@OneToMany關聯。此選項允許您爲兩個地圖附加鏈接表列(BOOK_AUTHOR creation_time)。

+0

再次感謝您的回答 – 2016-03-16 12:21:54

+0

不客氣。 – 2016-03-16 13:16:43