首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ManyToMany(mappedBy = "foo")

@ManyToMany(mappedBy = "foo")
EN

Stack Overflow用户
提问于 2013-01-01 23:20:37
回答 2查看 27.5K关注 0票数 37

Foo有:

代码语言:javascript
复制
@ManyToMany(mappedBy = "foos")
private Set<Bar> bars

而Bar有:

代码语言:javascript
复制
@ManyToMany
private Set<Foo> foos

除了表名为foo_bar还是bar_foo之外,mappedBy属性的位置对双向关系有什么不同;如果没有mappedBy属性,我会得到两个连接表,都是foo_bar和bar_foo。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-01 23:26:36

The documentation说:

如果关联是双向的,则一端必须是所有者,一端必须是相反的端(即更新关联表中的关系值时将忽略):

因此,具有mappedBy属性的那一侧是反侧。没有mappedBy属性的那一端是所有者。

所有者端是Hibernate查看哪个关联存在的一端。因此,例如,如果您在Bar的Foo集合中添加了Foo,Hibernate将在连接表中插入一个新行。相反,如果您将一个Bar添加到Foo的Bar集合中,则数据库中不会发生任何修改。

票数 47
EN

Stack Overflow用户

发布于 2013-01-01 23:28:30

mappedBy告诉Hibernate关系的哪一方“拥有”链接。在OneToManyOneToOne中,使用mappyedBy告诉Hibernate在另一个表中将有一个外键,用于存储链接。

当涉及到ManyToMany时,有一个连接表,所以这两个表都没有直接链接到另一个对象。然而,hibernate仍然需要知道哪一方是知道如何级联操作的“所有者”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14111607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档