我有三个表/实体,分别是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;
}
当我删除一个事件时,hibernate不会触发ParticipantEvent的删除。它给出了外键约束违规错误,直到我给ParticipantEvent - &gt;参与者级联到ALL。这将触发ParticipantEvent上的删除,但也会删除Participant表中的数据,但我不想删除Participant表中的任何数据。
我迷失了,我不认为ParticipantEvent DML应该依赖于参与者或事件。