두 개의 테이블, 팀 및 플레이어 (1 대 다수)가 있습니다.두 테이블이 서로 참조 할 수 있습니까?
첫 번째 질문은 두 테이블 모두 서로를 참조하도록하는 것이 바람직하지 않습니까?
Team: (id (pk), name, captain_id (fk))
Player: (id (pk), name, team_id (fk))
다음 설정으로 JPA와 최대 절전 모드를 사용하고 있습니다.
@Entity
public class Player {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@JoinColumn(name="team_id")
private Team team;
}
@Entity
public class Team {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
private int captainId;
@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
private Set<Player> players;
새로운 팀이 생성되는 순간에 해당 팀을 생성 한 플레이어의 ID가 매개 변수로 전달됩니다. 그것은 잘 작동하지만 그것은 수동으로 바로 느끼지 않습니다.
public void createNewTeam(Player player, Team team){
Set<Player> players = new HashSet<Player>();
Team team = new Team("Cowboys", player.getId(), players); //player.getId is the captain()
player.setTeam(team);
players.add(player);
PersistenceUtil.merge(team);
}
엔티티를 어떻게 든 자동으로 변경하는 방법이 있습니까? 아니면 테이블을 변경해야합니까?
gson을 사용하여 개체를 JSON으로 변환하려고했지만 아무 소용이 없었습니다. 순환 참조를 할 무언가가 있다고 생각합니다. (그래, 나는 너무 깊은 멍청한 녀석이다.)
물론 1-N BIDIRECTIONAL 관계가있는 것이 좋습니다. 그렇기 때문에 그 관계가 존재합니다! 릴랙스의 양쪽을 설정하십시오. –