【问题标题】:JPA one-to-many vs many-to-many - Books and authorsJPA 一对多 vs 多对多 - 书籍和作者
【发布时间】:2014-11-22 19:15:19
【问题描述】:

对于一个 JPA 项目,我被要求实现以下情况:

一本书可以有很多作者。

还有一个 UML 声明一个作者可以有很多书,而一本书可以有很多作者。

我是这个主题的初学者。 我是否需要多对多关系(带有交叉表) 还是我需要一个双向的一对多关系。

一对多关系的双向部分也让我感到困惑。如果有人能用一个例子来解释这一点,那就太好了。

【问题讨论】:

  • 一个作者有很多书,一本书有很多作者,所以很明显是ManyToMany关联:Book需要作者的集合,Author需要书籍的集合。什么让你困惑? JPA 文档和 Hibernate 文档包含大量示例。

标签: java database hibernate jpa netbeans


【解决方案1】:

双向关联允许您在对象空间以及 JPA/Hibernate 查询语言中导航此关系的双方。

在您的示例中,数据库多对多关联是强制性的(这意味着您有一个 BOOK、一个 AUTHOR 和一个 BOOK_AUTHOR 链接表)。 Hibernate 提供了两种映射这种关系的可能性:

  1. 您可以使用两个实体对此进行建模:Book 和 Author,每个实体都与另一个实体具有 @ManyToMany 关联(一个是拥有方,另一个是相反的一方)

  2. 您可以拥有三个实体:Book、Author 和 BookAuthor,这一次 Book 具有与 BookAuthor 的 @OneToMany 关联,而 Author 也具有与 BookAuthor 的 @OneToMany 关联。此选项允许您映射两个附加链接表列(BOOK_AUTHOR creation_time)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多