JPA:哪一方应该是am:n关系的拥有方?

dea*_*mon 10 java orm many-to-many jpa

比方说,我有两个实体:Article和Tag(就像在典型的博客中一样).每篇文章都可以有许多标签,每个标签都可以被许多文章使用,因此它是一种经典的m:n关系.

我需要用JPA指定一个拥有方.但哪一方应该是拥有方呢?文章不依赖于某个标签,反之亦然.是否有一个经验法则来确定哪一方应该是拥有方?

Pas*_*ent 10

每个双向关系都需要JPA中的拥有方.在特定情况下ManyToMany:

  • @JoinTable 在关系的拥有方指定.
    • 拥有方是任意的,您可以选择两个实体中的任何一个作为所有者.

从JPA规范:

9.1.26 ManyToMany注释

每个多对多关联都有两个方面,即拥有方和非拥有方,或反方.连接表是在拥有方指定的.如果关联是双向的,则任何一方都可以被指定为拥有方.


小智 6

您可以通过考虑更新关联的位置来选择拥有方.您只能在一个地方(拥有方)更新de ManyToMany关联.因此,选择取决于您希望如何管理/更新关联字段.