spring启动jpa多对多删除级联

vom3gejh  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(382)

所以我有一个myuser实体,它指的是一个具有多对多关系的角色实体。但是当我尝试删除用户时,总是得到一个错误,即用户id总是在user\u role jointable上引用。。。
我已经试过了每一种。。。但是没有得到解决请帮忙谢谢

@Table(name = "users")
public class MyUser {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    ... Other properties ...

    @ManyToMany
    @JoinTable(
            name = "users_roles",
            joinColumns = @JoinColumn(
                    name = "user_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(
                    name = "role_id", referencedColumnName = "id"))
    private Collection<Role> roles;

// getters setters

}

@Entity
@Table(name = "roles")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String role;

// getters setters
}
d5vmydt9

d5vmydt91#

如文件所述:
为了 @ManyToMany 协会 REMOVE 实体状态转换被级联是没有意义的,因为它将传播到链接表之外。由于另一侧可能被父一侧的其他实体引用,因此自动删除可能会以 ConstraintViolationException .
所以,在移除之前 Role 你应该确信没有 MyUser 与此角色链接的实体。

相关问题