我想要一個游戲物體,其中包含兩個存盤為 Longs 的玩家 ID 串列
這是我的桌子:game_player_team
| game_id | player_id | 團隊 |
|---|---|---|
| 1 | 1 | H |
| 1 | 2 | H |
| 1 | 3 | 一個 |
| 1 | 4 | 一個 |
這就是我對游戲物體建模的程度
我無法弄清楚如何分別獲取球隊 H 行的 player_id 和球隊 A 行的 player_id 到 homePlayerIds 和 awayPlayerIds。
我已經看到了 @Discriminator 注釋,但它們似乎只能用于繼承。
@Entity
class Game {
@Id
private Long id
@ElementCollection
@CollectionTable(name="game_player_team", joinColumns={@JoinColumn(name="game_id")})
@Column(name="player_id")
private List<Long> homePlayerIds;
@ElementCollection
@CollectionTable(name="game_player_team", joinColumns={@JoinColumn(name="game_id")})
@Column(name="player_id")
private List<Long> awayPlayerIds;
}
uj5u.com熱心網友回復:
您可以使用@Where 批注,但由于您正在使用@CollectionTable,您需要稍微更改映射。
此映射將起作用:
@Entity
class Game {
@Id
public Long id;
@ElementCollection
@CollectionTable(name="game_player_team", joinColumns={@JoinColumn(name="game_id")})
@Column(name="player_id")
@Where(clause = "team = 'H'")
public List<Player> homePlayerIds;
@ElementCollection
@CollectionTable(name="game_player_team", joinColumns={@JoinColumn(name="game_id")})
@Where(clause = "team = 'A'")
@Column(name="player_id")
public List<Player> awayPlayerIds;
}
@Embeddable
class Player {
@Column(name = "player_id")
public Long playerId;
public String team;
public Player() {
}
public Player(Long playerId, String team) {
this.playerId = playerId;
this.team = team;
}
}
請注意,對于關聯,通常會使用@WhereJoinTable,但是當我對其進行測驗時,它不適用于@CollectionTable.
uj5u.com熱心網友回復:
你可以嘗試使用這樣的東西:
import org.hibernate.annotations.Where;
import javax.persistence.ElementCollection;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
@Entity
class Game {
@Id
private Long id
@ElementCollection
@JoinTable(name = "game_player_team",
joinColumns = @JoinColumn(name = "game_id"))
@Where(clause = "team = 'H'")
@Column(name = "player_id")
private List<Long> homePlayerIds;
@ElementCollection
@JoinTable(name = "game_player_team",
joinColumns = @JoinColumn(name = "game_id"))
@Where(clause = "team = 'A'")
@Column(name = "player_id")
private List<Long> awayPlayerIds;
}
另請參閱hibernate 檔案的這一部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523026.html
標籤:爪哇休眠jpa
