1

我想知道是否可以在没有级联删除的情况下以双向 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”):两端的导航访问非常方便,并且我在项目端没有太多实例。

另外,如果有办法实现这一点,那么知道这些活动映射之后会发生什么会很有趣,我可以将它们(或将它们设置)设置为“null”吗?

感谢有关此问题的任何意见。

4

1 回答 1

2

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

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

于 2011-04-13T07:51:47.353 回答