Я думаю, вам лучше переосмыслить свою модель данных со всеми взаимосвязями (какую проблему следует решить? ..).
Что касается таблицы CoopGamesPlayers: если вы просто хотите использовать CoopGamesPlayers в качестве объединяемой таблицы, вам не нужен CoopGamesPlayersPK.
CoopGame и CoopGamesPlayers должны выглядеть примерно так:
@Entity
@Table(name = "coop_games")
public class CoopGame {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "game", fetch = FetchType.EAGER)
private List<CoopGamesPlayers> players;
}
@Entity
@Table(name = "coop_games_players")
public class CoopGamesPlayers {
@EmbeddedId
private PlayerPK pk;
@JsonBackReference
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "coop_game_id")
private CoopGame game;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "playerid", referencedColumnName = "id"),
@JoinColumn(name = "userid", referencedColumnName = "userid")
})
@MapsId("id")
private Player player;
}
@MapsId("id")
- идентификатор, потому что вы хотите, чтобы идентификатор игрока был fk или?