更新一对多关系后删除孤儿

Posted

技术标签:

【中文标题】更新一对多关系后删除孤儿【英文标题】:Delete orphan child after updating one to many relationship 【发布时间】:2013-07-12 18:47:50 【问题描述】:

我有一个从 A 类到 B 的一对多关系。这种关系不是可选的,所以 B 类的每个对象都应该与 A 类的一个对象关联。反之则不成立,A 类的对象可能有 0 到 B 类的任意数量的对象。

当我更新 A 类型的对象时,它可能会停止指向它之前指向的 B 类型的对象。这会强制反向关系为零,从而破坏数据库。

在此更新后,我开始看到类似于以下内容的错误:

Exception Reported Error Domain=NSCocoaErrorDomain Code=1570 "The operation couldn’t be completed.

NSValidationErrorObject 是 B 类型,而 NSValidationErrorKey 是这种反比关系。

在对 A 进行任何更新后,我想删除任何 B 类型的无用对象。有什么办法吗?

谢谢。

【问题讨论】:

【参考方案1】:

为什么在更新对象 A 的时候不删除对象 B?

【讨论】:

一方面,我想自动保持一致性。我不想手动担心这些更新。另一方面,对象在我们使用的通用库中更新,我不应该修改(在这种情况下我不能)。对象在运行时进行分析,并根据字典中的描述进行修改。基本上,我们从不直接更新对象,而是通过一个可以处理任何类型对象的通用库,我不能向它添加新逻辑。

以上是关于更新一对多关系后删除孤儿的主要内容,如果未能解决你的问题,请参考以下文章

一对多 JPA 注释不会删除孤儿

休眠一对多关联删除

SQL Alchemy - 从一个实体上的多个一对一关系中删除孤儿[关闭]

在 Laravel 中同步一对多关系

三大框架 之 Hibernate查询(一对多多对多查询关系)

Symfony Doctrine:一对多关系正在删除父实体