gpt4 book ai didi

grails - 如何防止双向关联的级联删除?

转载 作者:行者123 更新时间:2023-12-02 14:38:05 25 4
gpt4 key购买 nike

我想知道是否可以在没有级联删除的情况下以双向1:N关联删除父对象。根据

http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html

...在单向关系中,父端映射为“保存更新”,子端映射为“无”。我为双向关系尝试了这些设置,但并不奇怪,它没有起作用。特别:

class Personnel {
...
}

static hasMany = [projectlead:Project, projectmanager:Project]

static mappedBy = [projectlead:'leaddeveloper', projectmanager:'projectmanager']

static mapping = {
projectlead cascade:'save-update'
projectmanager cascade:'save-update'
}

这是项目类:
class Project {
...
}
static belongsTo = [leaddeveloper:Personnel, projectmanager:Personnel]

static mapping = {
leaddeveloper cascade:'none'
projectmanager cascade:'none'
}

如果有解决方案,我宁愿不重新设计我的应用程序(通过从Project类中删除“belongsTo”):两端的导航访问都很方便,并且在项目端没有太多实例。

另外,如果有一种实现此方法的方法,那么很有趣的是,这些 Activity 映射之后会发生什么,例如,我可以将它们设置(或将它们设置为“null”)吗?

感谢对此事的任何投入。

最佳答案

通过阅读您的问题,我认为您想删除“Personnel”对象,但保持其“projects”不变。遗憾的是,当前的实现无法做到这一点。 “belongsTo”关系意味着每个子对象必须具有一个Parent对象。如果删除父对象,则孤儿也将被删除。

您可以尝试而无需过多修改设计的另一种选择是“标记为已删除”。在Personal中添加一个“已删除”字段,如果您要删除某人,只需将其标记为已删除即可。即使项目经理离开后,这也将帮助您保留项目的历史数据。

关于grails - 如何防止双向关联的级联删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com