package app.data.entity; import javax.persistence.*; import java.util.Collection; import java.util.Objects; @Entity @Table(name = "player", schema = "public", catalog = "chessleague") public class Player { private Integer id; private String name; private String nickname; private Collection matchesAsPlayer1; private Collection matchesAsPlayer2; private PlayerInfo playerInfo; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Basic @Column(name = "name", nullable = false, length = -1) public String getName() { return name; } public void setName(String name) { this.name = name; } @Basic @Column(name = "nickname", nullable = false, length = -1) public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Player that = (Player) o; return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(nickname, that.nickname); } @Override public int hashCode() { return Objects.hash(id, name, nickname); } @OneToMany(mappedBy = "player1", cascade = CascadeType.DETACH) public Collection getMatchesAsPlayer1() { return matchesAsPlayer1; } public void setMatchesAsPlayer1(Collection matchesAsPlayer1) { this.matchesAsPlayer1 = matchesAsPlayer1; } @OneToMany(mappedBy = "player2", cascade = CascadeType.DETACH) public Collection getMatchesAsPlayer2() { return matchesAsPlayer2; } public void setMatchesAsPlayer2(Collection matchesAsPlayer2) { this.matchesAsPlayer2 = matchesAsPlayer2; } @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "info", referencedColumnName = "id") public PlayerInfo getPlayerInfo() { return playerInfo; } public void setPlayerInfo(PlayerInfo playerInfo) { this.playerInfo = playerInfo; } }