我设置了一个ManyToOne关系。每个团队可以有多个用户。我在Team.java中使用CascadeType.PERSIST
,因为我不希望在团队被删除时删除用户帐户,反之亦然。级联类型是否适合我的用例?
User.java表team_id
中的联接列在保存一个团队并在控制器中向该团队添加一个用户后保持为null。
Team.java
@OneToMany(mappedBy = "memberAtTeam", cascade = CascadeType.PERSIST)
private List<User> usersInTeam;
User.java
@ManyToOne
@JoinColumn(name = "team_id")
private Team memberAtTeam;
TeamController.java
Team teamInvitedTo = invite.getTeamInvitedTo(); //Returns a Team object. Works.
teamInvitedTo.getUsersInTeam().add(invitedUser); //invitedUser is a User.java object
teamRepository.save(teamInvitedTo); //Doesn't set team_id, stays null in DB
teamInviteRepository.delete(invite); //Deletes used invite, this works.
invitedUser
的memberAtTeam
字段在添加到teamInvitedTo
的usersInTeam
集合时需要指向usersInTeam
。否则,保存时usersInTeam
的外键列值不会指向teamInvitedTo
,而是保持为null。
Team teamInvitedTo = invite.getTeamInvitedTo(); //Returns a Team object. Works.
invitedUser.setMemberAtTeam(teamInvitedTo);
teamInvitedTo.getUsersInTeam().add(invitedUser); //invitedUser is a User.java object
teamRepository.save(teamInvitedTo); //Doesn't set team_id, stays null in DB
teamInviteRepository.delete(invite); //Deletes used invite, this works.