春季数据JPA |从@ManyToMany关系中的@JoinTable中删除MyGroup时,仅删除条目

时间:2020-05-17 11:11:38

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

我正在将Spring Boot 2.0和spring数据jpa与hibernate一起使用。我正在创建一个Web应用程序,用户可以在其中创建群组,其他用户可以加入该群组。为此,我创建了两个名为User和MyGroup的实体,如下所示。

@MappedSuperclass
public class BaseEntity {

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

}



@Entity
public class User extends BaseEntity {

    String name;

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "members")
    Set<MyGroup> joinedGroup= new HashSet<MyGroup>();

}

@Entity
public class MyGroup extends BaseEntity {

    String name;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    Set<User> members = new HashSet<User>();

}

在这里,我想要的是,如果删除了一个组,那么它从联接表中的关系条目也将被删除,但用户不应被删除。此代码甚至也删除了用户。请建议我如何删除组和关系条目。

1 个答案:

答案 0 :(得分:0)

MyGroup.java中的

CascadeType.ALL会在删除组后删除所有关联的用户。因此,将级联CascadeType.ALL替换为CascadeType.MERGE