ManyToOne関係のMany側に削除に関する問題があります。私は既にすべてカスケードタイプを関係から削除しましたが、それでも問題は残ります。エントリは削除されません(選択項目のみが実行され、削除クエリは実行されません)。削除するCRUDリポジトリ呼び出しで削除しようとしています。メソッドを呼び出して正常に実行されますが、何も起こりません。Java Springリポジトリの削除が機能しないOneToMany関係
関係は次のようになります。アクティビティには割り当てられたコースがあり、コースには多くのアクティビティが割り当てられます。アクティビティには特定のアクティビティタイプがあります。
クラスは次のとおりです。
活性
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)'を追加する必要があります。そして、 'Activity'が削除された場合、これはあなたの' Course'を削除しません。 –