我正在努力牢牢掌握业主方的概念。从我在这里发现的任何问题中都无法真正获得清晰的图片。基本上我正在学习 Java EE JPA 教程。他们具有以下数据库架构,其中PLAYER
and TEAM
具有多对多关系
还说明
- 一名球员可以效力于多支球队。
- 一个球队可以有很多球员。
- 之间存在多对多的关系
PLAYER
and TEAM
.
到目前为止非常简单。但是当进入编码部分时,他们做出了TEAM
关系的拥有方。
public class Team {
private Collection<Player> players;
@ManyToMany
@JoinTable(
name = "PERSITENCE_ROSTER_TEAM_PLAYER",
joinColumns = @JoinColumn(name = "TEAM_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "PLAYER_ID", referencedColumnName = "ID")
)
public Collection<Player> getPlayers() {
return players;
}
}
public class Player {
private Collection<Team> teams;
@ManyToMany(mappedBy = "players")
public Collection<Team> getTeams() {
return teams;
}
}
问题)
我理解代码没有问题。我无法掌握的是:
1.如何确定TEAM
是拥有方?
2. 如果PLAYER
在这种情况下,变成了拥有方?
教程中也有说明。
“指定的实体@JoinTable
是 的所有者
关系,所以TEAM
实体是与该关系的所有者PLAYER
实体。”
话虽如此:
3. 上述陈述是否可以回答我的第二个问题?这意味着除了您选择哪一个之外,没有任何决定因素decide使拥有方,与@JoinTable
注解?
- 如何确定TEAM是主场?
对于双向场景中的多对多关系,可以任意选择关系的所有者,但考虑到目的,您应该选择首先检索更有意义的实体,或者根据您的目的选择更常用的实体。您只需要记住,在 ManyToOne 场景中,Many 始终需要成为拥有方。
- 在这种情况下,如果玩家成为拥有一方,会有什么不同吗?
不,不会,因为这种关系是双向的。
- 上述陈述是否可以回答我的第二个问题?这意味着除了您决定选择的因素之外,没有任何决定因素
使用 @JoinTable 注释创建拥有方?
是的,@JoinTable 必须像其他一些注释一样位于关系的所有者中。选择所有者后,您应该在该类中添加注释。
还要考虑您需要的级联操作(如果适用)以及关系双方是否都需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)