Hibernate 强制休眠以删除连接表行
我有点困惑,因为我无法强制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(
@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;
}