Jpa orphanRemoval = true首先删除吗?

时间:2018-10-08 18:45:09

标签: java database hibernate jpa spring-data-jpa

我有如下实体:

@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)时,它首先尝试插入新的列表成员,然后删除旧数据。

问题是我的表具有唯一性约束,旧数据和新数据相互冲突。

它可以正常工作,如果它首先尝试删除旧的,然后插入新的。 对于这种情况有什么解决办法吗?

0 个答案:

没有答案