我有如下实体:
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = {“user_member_id", “address_id”})
})
Public class User(){
private Long id;
private String name;
private String surname;
@OneToMany(mappedBy = “user”, cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<UserMember> userMembers;
@OneToMany(mappedBy = “user”, cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<Address> addresses;
//… getters setters
public void setRoles(List<UserMembers> userMembers) {
this.userMembers.clear();
List<UserMembers> userMembers = userMembers.stream()
.map(operatorRole -> new OperatorRoleMember(this, operatorRole))
.collect(Collectors.toList());
this.roleMembers.addAll(roleMembers);
}
}
@Entity
Public class UserMember(){
private Long id;
private name;
@ManyToOne
private User user;
//getters and setters...
}
当我在事务中运行setRoles(List userMembers)时,它首先尝试插入新的列表成员,然后删除旧数据。
问题是我的表具有唯一性约束,旧数据和新数据相互冲突。
它可以正常工作,如果它首先尝试删除旧的,然后插入新的。 对于这种情况有什么解决办法吗?