我建立了多對一關系。每個團隊可以有多個用戶。我CascadeType.PERSIST在 Team.java 中使用,因為我不希望在團隊被洗掉時洗掉用戶帳戶,反之亦然。級聯型別是否適合我的用例?
User.java 表中的聯接列在team_id保存團隊并在控制器中將用戶添加到該團隊后保持為空。
團隊.java
@OneToMany(mappedBy = "memberAtTeam", cascade = CascadeType.PERSIST)
private List<User> usersInTeam;
用戶.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.
uj5u.com熱心網友回復:
的memberAtTeam欄位在添加到 的集合時invitedUser需要指向。否則保存時外鍵列的值不會指向 ,而是保持為空。usersInTeamusersInTeamteamInvitedTousersInTeamteamInvitedTo
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.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443673.html
下一篇:Mapstruct如何初始化欄位
