我有三个表/实体,分别是 Event、Participant 和 ParticipantEvent。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。