我有兩張桌子,團隊和球員(一對多)。兩個表格可以互相引用嗎?
我的第一個問題是,讓兩個表互相引用是不好的做法?
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關係,這就是爲什麼關係存在!設置關係的兩邊 –