Postgresql 删除主表中的条目时自动删除联接表中的条目
我有一个Postgresql 删除主表中的条目时自动删除联接表中的条目,postgresql,hibernate,Postgresql,Hibernate,我有一个WorkpackageEntity,其中包含一个TaskEntity数组,如下所示: 在我们的工作包实体中: @OneToMany(targetEntity = TaskEntity.class, cascade = CascadeType.ALL) private Set<TaskEntity> tasks; @ManyToOne(targetEntity = WorkpackageEntity.class) private WorkpackageEntity wp;
WorkpackageEntity
,其中包含一个TaskEntity
数组,如下所示:
在我们的工作包实体中
:
@OneToMany(targetEntity = TaskEntity.class, cascade = CascadeType.ALL)
private Set<TaskEntity> tasks;
@ManyToOne(targetEntity = WorkpackageEntity.class)
private WorkpackageEntity wp;
因此,将自动创建一个名为workpackage\u tasks
的联接表,其中包含链接的两个实体的ID
我试图实现的是,当我从我的任务
表中删除任务实体
时,它还应该自动删除工作包任务
表中的相应条目
到目前为止,它试图删除任务中的条目
,并抛出以下(明显)错误:
错误:表“任务”上的更新或删除违反了表“工作包任务”上的外键约束“fknd9vbaspv4un3lkr420fbe78j”
详细信息:键(任务id)=(8)仍然从表“工作包任务”中引用
在删除级联上用
声明FK约束
。我不确定我是否理解创建表工作包任务(任务id整数,工作包id整数,外键(任务id)引用删除级联上的任务(id),外键(工作包id)引用删除级联上的工作包(id)
当hibernate自动生成我的表时,这可以通过hibernate完成吗?有点像,如果您在集合中使用cascade=“delete”
,但这将由hibernate处理(它将发送多个delete
语句),而不是数据库。我认为hibernate不支持数据库级联。你可以多读一点