java - 具有ManyToMany关系的级联删除

标签 java mysql hibernate jpa

我有以下实体。我希望能够删除用户,并且 UserGroupMap 中包含该用户的任何条目也应该被删除。但是,每次我尝试删除在 UserGroupMap 中也有条目的用户时,都会收到以下错误。无法删除或更新父行:外键约束失败如何实现此行为? p>

@Entity
public class User {

   @Id
   private Long id;

   @Column
   private String name;

   @ManyToMany(mappedBy = "users", cascade = CascadeType.All)
   private Set<Group> groups;

 }


@Entity
public class Group {

   @Id
   private Long id;

   @Column
   private String type;

    @ManyToMany
    @JoinTable(name = "UserGroupMap", 
            joinColumns = @JoinColumn(name = "groupId", referencedColumnName = "id"), 
            inverseJoinColumns = @JoinColumn(name = "userId", referencedColumnName = "id") )
   private Set<User> users;

 }

最佳答案

您应该将 (cascade=CascadeType.REMOVE) 添加到您的多对多关系

喜欢这个例子

@ManyToMany(cascade=CascadeType.REMOVE)

关于java - 具有ManyToMany关系的级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149097/

相关文章:

java - DL4J UnsatisfiedLinkError : no jniopenblas in java. 库.path

mysql - dbForge Studio图表自动添加相关表到数据库图表

java - Hibernate (JPA) 多个@OneToMany 用于同一模型

java - Action 监听器不起作用

java - 如何获取一个不断更改名称的 JSON 对象

java - RandomAccessFile 与 NIO channel

mysql - 超过 8 个表的特定汽车行业 SQL 查询(mysql)

mysql - 如何统计一个user_id在一个表中出现的次数?

Hibernate:基于表名的列名?

java - Spring Boot 和 PostgreSQL : Error creating bean with name 'entityManagerFactory' defined in class path resource