2014-11-22 40 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