Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法理解使用hibernate删除时的JPA级联行为_Java_Hibernate_Jpa_Orm_Hibernate Cascade - Fatal编程技术网

Java 无法理解使用hibernate删除时的JPA级联行为

Java 无法理解使用hibernate删除时的JPA级联行为,java,hibernate,jpa,orm,hibernate-cascade,Java,Hibernate,Jpa,Orm,Hibernate Cascade,我有三个表/实体,分别是事件、参与者和参与者事件。ParticipantEvent有点像多对多关系的联接表,但我将其作为一个实体。映射是这样的 public class Event { @OneToMany(mappedBy = "event", cascade=CascadeType.REMOVE) private List<ParticipantEvent> participantEvents; } public class Participant {

我有三个表/实体,分别是事件、参与者和参与者事件。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;
}
公共类事件{
@OneToMany(mappedBy=“event”,cascade=CascadeType.REMOVE)
私人名单参与者;
}
公开课参与者{
@OneToMany(mappedBy=“participant”,cascade=CascadeType.ALL)
私人名单参与者;
}
公共课堂参与者{
@许多酮
私人活动;
@许多酮
私人参与者;
}
当我删除事件时,hibernate不会触发对ParticipantEvent的删除。它会给出外键约束冲突错误,直到我将ParticipantEvent->Participant cascade提供给ALL。这将触发ParticipantEvent fine上的delete,但也会从Participant表中删除数据,但我不想从Participant表中删除任何数据


我在这里迷路了,我不认为ParticipantEvent DML应该依赖于参与者或事件。

刚刚尝试过,但仍然存在外键约束冲突错误。问题是我必须将参与者关系级联声明为所有in-participantevent实体,以便工作事件移除级联。我不知道为什么我需要向所有人声明参与者关系级联。首先,您有mappedBy=“event”,而字段名为“events”。这只是打字错误吗?其次,您使用的是什么版本的Hibernate?@AlanHay我使用的是Hibernate 4.3.7最终版本,只是我的问题有误。@Goldbones:我已经试过了。仍然出现外键约束错误。@Goldbones:很抱歉脱机。。。我的互联网坏了一个小时。我们能再做一次吗?