Hibernate 强制休眠以删除连接表行

Hibernate 强制休眠以删除连接表行,hibernate,one-to-many,many-to-one,cascading-deletes,Hibernate,One To Many,Many To One,Cascading Deletes,我有点困惑,因为我无法强制Hibernate删除联接表中的行。可能我需要进行不同的配置 我有一个表组件和任务,一个表将它们连接到组件和任务。在我的类组件中,我有: @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = "Component_Tasks", joinColumns = @JoinColumn(name = "ComponentID"), inverseJoinColumns = @JoinColumn(

我有点困惑,因为我无法强制Hibernate删除联接表中的行。可能我需要进行不同的配置

我有一个表组件和任务,一个表将它们连接到组件和任务。在我的类组件中,我有:

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Component_Tasks",
           joinColumns = @JoinColumn(name = "ComponentID"), inverseJoinColumns = @JoinColumn(name = "TaskID"))
public List<Task> getTasks() {
    return tasks;
}
我想要的是,当我删除a任务时,默认情况下会删除Component_Tasks表中的下划线行。基本上,由于外键关系,我的删除失败

ALTER TABLE Component_Tasks ADD FOREIGN KEY (TASKID)  REFERENCES Tasks (ID); 
我相信,如果我将任务中的组件设置为null,然后保存对象并尝试删除它,我可以实现相同的行为。但我希望Hibernate在默认情况下做到这一点


有什么建议吗

您的映射错误。在组件中,您是说组件和任务之间的关联由联接表映射

在Task中,您是说相同的关联由Task表中的join列映射

下定决心吧。如果关联是一个单域双向关联,则通常不需要连接表,您只需要

@OneToMany(cascade = CascadeType.ALL, mappedBy = "component")
public List<Task> getTasks() {
    return tasks;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "component")
public List<Task> getTasks() {
    return tasks;
}
@ManyToOne
@JoinColumn(name = "ComponentID")
public Component getComponent() {
    return component;
}