Java Spring 存储库删除不起作用 OneToMany 关系

Java Spring Repository delete not working OneToMany Relationship

我在删除 ManyToOne 关系的多边时遇到问题。我已经从关系中删除了所有 CascadeTypes,但问题仍然存在。该条目不会被删除(只执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用删除它。它调用该方法并成功执行但没有任何反应。

关系如下:一个Activity有一个分配的课程,一个课程可以有许多分配给它的活动。 Activity 具有特定的 ActivityType。

类如下

Activity

public class Activity implements Item, Serializable {

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

    ...

    @ManyToOne
    @JoinColumn(name = "type_id", nullable = false)
    private ActivityType type;

    @ManyToOne
    @JoinColumn(name = "course_id", nullable = false)
    @JsonSerialize(using = CustomCourseSerializer.class)
    private Course course;

    ...
}

课程

public class Course implements Item, Serializable {

...

@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class) //cascade = { CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, CascadeType.REMOVE}
@Fetch(value = FetchMode.SUBSELECT)
private List<Activity> activities;

...
}

Activity 类型(未引用 Activity)

public class ActivityType implements Item, Serializable {

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

@Column(name = "name", nullable = false, unique = true)
private String name;
...
}

有什么办法可以解决这个问题或至少对其进行调试吗?谢谢。

尝试从 Course 中删除对 Activity 的引用。我觉得没必要

Course 实体的 @OneToMany 注释中添加 orphanRemoval = true 属性。

public class Course implements Item, Serializable {

    ...

    @OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class, orphanRemoval = true, cascade = CascadeType.REMOVE )
    @Fetch(value = FetchMode.SUBSELECT)
    private List<Activity> activities;

    ...

}