我有一個問題,刪除許多方面的一個ManyToOne關係。我已經從關係中刪除了所有CascadeTypes,但問題仍然存在。該條目不會被刪除(只有選擇被執行,沒有刪除查詢)。我試圖通過CRUD庫調用來刪除它。它調用該方法併成功執行,但沒有任何反應。Java Spring存儲庫刪除不起作用OneToMany Relationship
關係如下:活動具有指定的課程,課程可以分配許多活動。一個Activity有一個特定的ActivityType。
這些類如下。
活動
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;
...
}
活動類型(沒有參考到活動)
public class ActivityType implements Item, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false, unique = true)
private String name;
...
}
任何想法如何解決此問題或至少調試它?謝謝。
您是否嘗試過'orphanRemoval = true'? –
我已經將orphanRemoval添加到課程結束,並且沒有任何更改。此外,這不是期望的行爲(當我刪除活動時刪除課程)。或者你指的是將它添加到活動部分? –
如果你想刪除子Activity,你必須在Course類中添加@OneToMany(orphanRemoval = true)'。如果刪除了「活動」,這將不會刪除「課程」。 –