Grails:只删除多对多关系的一面

时间:2015-06-29 13:39:28

标签: grails gorm

我和A之间有很多关系, 其中A belongsTo B

假设数据库中包含以下数据:

<a1,b1>
<a1,b2>
<a2,b1>

如何删除所有a1,因此数据库将保留

<a2,b1>

以最优雅\自动方式使用映射?

1 个答案:

答案 0 :(得分:0)

不幸的是,级联“all-delete-orphan”,这听起来非常合适,applies only to one-to-many relationships(我刚刚在你的场景中对它进行了测试,但它确实不起作用)。除了使用beforeDelete上的A hibernate事件删除所有孤立的B's之外,我无法想到更优雅的处理方式。

考虑将联接表映射为建议here的实体,以避免头痛,并且如果您需要Burt Beckwith here建议的性能。我讨厌这种非面向对象的方法,但你可能需要遵循它。至少你会有级联删除。