tôi có các đối tượng sau:Hibernate @OneToMany loại bỏ con ra khỏi danh sách khi cập nhật mẹ
TEAM
@Entity
@Table
public class Team {
[..]
private Set<UserTeamRole> userTeamRoles;
/**
* @return the userTeamRoles
*/
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "team", fetch = FetchType.LAZY)
public Set<UserTeamRole> getUserTeamRoles() {
return userTeamRoles;
}
/**
* @param userTeamRoles
* the userTeamRoles to set
*/
public void setUserTeamRoles(Set<UserTeamRole> userTeamRoles) {
this.userTeamRoles = userTeamRoles;
}
}
và
USER_TEAM_ROLE
@Entity
@Table(name = "user_team_role")
public class UserTeamRole {
@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
@JoinColumn(name = "FK_TeamId")
public Team getTeam() {
return team;
}
}
Bây giờ , khi cập nhật thực thể Team có chứa Team.userTeamRoles = {UTR1, UTR2} với {UTR1, UTR3}, tôi muốn xóa UTR2. Nhưng cách tôi làm điều đó bây giờ, danh sách cũ vẫn giữ nguyên và nó chỉ thêm UTR3 vào danh sách.
Đây là cách tôi làm điều đó vào lúc này:
if (!usersDualListData.getTarget().isEmpty()) {
// the role for each user within the team will be "employee"
team.setUserTeamRoles(new HashSet<UserTeamRole>());
Role roleForUser = roleService
.getRoleByName(RoleNames.ROLE_EMPLOYEE.name());
for (User user : usersDualListData.getTarget()) {
UserTeamRole utr = new UserTeamRole();
utr.setUser(user);
utr.setTeam(team);
utr.setRole(roleForUser);
team.getUserTeamRoles().add(utr);
}
}
teamService.updateTeam(team);
Tôi nghĩ rằng bằng cách làm team.setUserTeamRoles(new HashSet<UserTeamRole>());
danh sách sẽ được thiết lập lại và vì sự thác các danh sách trước đó sẽ bị xóa.
Mọi trợ giúp đều được đánh giá cao. Cảm ơn bạn
tôi nghĩ là cùng một vấn đề ở đây: http://stackoverflow.com/questions/2011519/jpa-onetomany-not-deleting-child kiểm tra xem nó ra! –