Event、Participant、ParticipantEvent という 3 つのテーブル/エンティティがあります。ParticipantEvent は、多対多の関係の結合テーブルのようなものですが、エンティティとして作成しました。そして、マッピングは次のようになります。
public class Event {
@OneToMany(mappedBy = "event", cascade=CascadeType.REMOVE)
private List<ParticipantEvent> participantEvents;
}
public class Participant {
@OneToMany(mappedBy = "participant", cascade=CascadeType.ALL)
private List<ParticipantEvent> participantEvents;
}
public class ParticipantEvent {
@ManyToOne
private Event event;
@ManyToOne
private Participant participant;
}
イベントを削除すると、休止状態が ParticipantEvent の削除をトリガーしません。ParticipantEvent -> Participant cascade を ALL に渡すまで、外部キー制約違反エラーが発生します。これにより、ParticipantEvent で削除がトリガーされますが、Participant テーブルからもデータが削除されますが、Participant テーブルからデータを削除したくありません。
ここで迷っています。ParticipantEvent DML が Participant または Event に依存するべきではないと思います。