簡體   English   中英

中間表中的附加列,在jpa中有很多次重復

[英]Additional column in the intermediate table in many to many replationship in jpa

我有兩個類Game和Team,它們之間有多對多的關系。

游戲:

@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是游戲和團隊類的ID的外鍵。 因此,每當我更新團隊和游戲時,我都會自動更新game_team。

好。 好。 現在問題是什么? 我有第三列WON_BY,也需要更新。 如果沒有這個額外的第三列,我就不必創建第三類GameTeam。

要更新不是外鍵的第三列,我應該為中間表創建實體類嗎? 如果是這樣,我應該使用什么樣的方法或注釋?

你需要有一個單獨的實體類來保持你的'WON_BY',你需要稍微重新考慮你現有的實體類,因為解決方案很大,請參考下面的示例示例,這肯定會解決您的問題。

http://www.codejava.net/frameworks/hibernate/hibernate-many-to-many-association-with-extra-columns-in-join-table-example

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM