@Entity
@Getter
@Setter
@Table(name = "player")
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name", nullable = false)
private String name;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "player_games",
joinColumns = @JoinColumn(name = "player_id"),
inverseJoinColumns = @JoinColumn(name = "game_with_discipline"))
private List<GameDiscipline> gamesWithDiscipline;
}
@Entity
@Getter
@Setter
@Table(name = "game")
public class Game {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name", nullable = false)
private String name;
}
@Entity
@Getter
@Setter
@Table(name = "discipline")
public class Discipline {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name", nullable = false)
private String name;
}
@Entity
@Getter
@Setter
@Table(name = "game_disciplines")
public class GameDiscipline {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "game_id", nullable = false)
private Game game;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "discipline_id", nullable = false)
private Discipline discipline;
}
Это выглядит правильно. Конечно, вы можете сделать любое из отношений двунаправленным, если хотите.