我有两个班级游戏和团队,他们之间有很多对很多的关系。
游戏:
@Entity
@Table(name = "GAME")
public class Game extends Model {
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="GAME_TEAM",
joinColumns={@JoinColumn(name="GAME_ID")},
inverseJoinColumns={@JoinColumn(name="TEAM_ID")})
private List<Team> teams = new ArrayList<Team>();
public List<Team> getTeams() {
return teams;
}
public void setTeams(List<Team> teams) {
this.teams = teams;
}
}
团队:
@Entity
@Table(name = "TEAM")
public class Team extends Model {
@Column(name = "TEAM_NAME")
private String teamName;
@OneToMany(mappedBy = "team", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Player> player = new LinkedHashSet<Player>();
@ManyToMany(cascade=CascadeType.ALL, mappedBy="teams")
private Set<Game> games;
public Set<Player> getPlayer() {
return player;
}
public void setPlayer(Set<Player> player) {
this.player = player;
}
public Set<Game> getGames()
{
return games;
}
public void setGames(Set<Game> games) {
this.games = games;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
在这两个类之间有第三个中间表GAME_TEAM,它有TEAM_id,GAME_id是GAME和TEAM类id的外键。所以每当我更新团队和游戏时,我都会自动更新游戏团队。
好 啊。很好。现在有什么问题?我有第三篇专栏文章,也需要更新。没有这个额外的第三栏,我不必创建第三类游戏团队。
要更新不是外键的第三列,是否应为中间表创建实体类?如果是这样,我应该使用什么样的方法或注释?
最佳答案
你需要有一个单独的实体类来保存你的“WON_BY”,并且
您需要重新调整现有的实体类,因为
解决方案很大,请参考下面的示例
一定能解决你的问题。
http://www.codejava.net/frameworks/hibernate/hibernate-many-to-many-association-with-extra-columns-in-join-table-example
关于java - jpa中多对多关系在中间表中的附加列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33049038/