hibernate的最佳做法指出,多对多关联很少见,应避免。
不要使用外来关联映射: 真正的多对多关联的实际测试案例很少见。大多数时候,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多关联用于中间链接类。实际上,大多数关联是一对多和多对一的。因此,在使用任何其他关联样式时,您应谨慎进行。
不要使用外来关联映射:
真正的多对多关联的实际测试案例很少见。大多数时候,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多关联用于中间链接类。实际上,大多数关联是一对多和多对一的。因此,在使用任何其他关联样式时,您应谨慎进行。
一个基本且常见的情况是:用户可以在多个团队中,一个团队可以有多个成员。
除了为联接表创建实体之外,还有使用@ManyToMany的替代方法吗?对于团队/成员,联接表中没有其他数据,因此让Team> TeamMembership> User不太实用。
使用没有本质上的错误,@ManyToMany但是在实践中,您很少有机会使用它。通常,您需要在链接本身上具有其他属性,此时,该关系将成为其自身的实体。
@ManyToMany
根据我的经验,一个例子就是您描述的这种人/团队关系。我@ManyToMany最初使用,但必须将其转换为@OneToMany一次,以添加关于关系的有效日期(某人在特定时间属于团队)。
@OneToMany