0

我有点困惑,因为我不能强制 Hibernate 删除连接表中的行。可能我需要配置一些不同的东西。

我有一个表 Component 和 Task 以及一个连接它们 Component_Tasks 的表。在我的课堂组件中,我有:

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Component_Tasks",
           joinColumns = @JoinColumn(name = "ComponentID"), inverseJoinColumns = @JoinColumn(name = "TaskID"))
public List<Task> getTasks() {
    return tasks;
}

在我的课堂任务中,我有

@ManyToOne
@JoinColumn(name = "ComponentID")
public Component getComponent() {
    return component;
}

我想要的是,当我删除任务时,我默认删除 Component_Tasks 表中的下划线行。基本上我的删除因为外键关系而失败

ALTER TABLE Component_Tasks ADD FOREIGN KEY (TASKID)  REFERENCES Tasks (ID); 

我相信如果我将任务中的组件设置为 null 然后我保存对象然后尝试删除它,我可以实现相同的行为。但我希望 Hibernate 默认执行此操作。

有什么建议么?

4

1 回答 1

0

你的映射是错误的。在 Component 中,您是说 Component 和 Task 之间的关联是由连接表映射的。

在任务中,您是说相同的关联由任务表中的连接列映射。

下定决心。如果关联是 OneToMany 双向关联,通常不需要连接表,只需要

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

@ManyToOne
@JoinColumn(name = "ComponentID")
public Component getComponent() {
    return component;
}
于 2012-12-22T12:45:05.177 回答