我有两张桌子,团队和球员(一对多)。两个表格可以互相引用吗?
我的第一个问题是,让两个表互相引用是不好的做法?
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关系,这就是为什么关系存在!设置关系的两边 –