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

标签 grails associations gorm cascade cascading-deletes

我想知道是否可以在没有级联删除的情况下以双向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/

相关文章:

grails - 在同一线程GORM上两次刷新

java - Grails War 无法部署到 Tomcat - 错误 : org. postgresql.Driver 未找到

grails - grails分页设置页数限制

java - 在 Grails 中显示日期/保存日期

php - Doctrine :正反面

grails - 正则表达式验证-Grails约束

grails - 在Grails中记录今天的日期

ruby-on-rails - 使用vestal_versions的版本关联?

mysql - Doctrine 选择 innerJoined 实体或没有关联的实体

grails - 如何将域类与另一个域类的两个实例映射