首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除m- to -m也是在尝试级联删除one-2-one

删除m- to -m也是在尝试级联删除one-2-one
EN

Stack Overflow用户
提问于 2010-10-10 00:59:00
回答 1查看 138关注 0票数 0

我有以下域名

代码语言:javascript
运行
复制
class Committee {
   String name
   BoardCommitteeType boardCommitteeType
   Date dateCreated
   Date lastUpdated
   User createdBy
   User modifiedBy

   static belongsTo = [
      board: Board,
   ]

   static hasMany = [          
      members: User
   ]
}

class User {

    static hasMany = [            
        committees: Committee,     
    ]

    static belongsTo = [
        Board, Committee
    ]
}

问题是,当我尝试做一个委员会(board.removeFromCommittees)时,我得到了以下异常:

删除的对象将通过级联重新保存(从关联中删除删除的对象):com.wbr.highbar.User#1;

我明白那是什么意思。我不明白的是为什么我会得到它。另一个有趣的地方是,如果我将委员会实例中的creatdBy和modifiedBy设为空,删除操作就可以正常工作。这就是为什么我认为GORM正在尝试级联one-2-one。我的理论是,这与用户belongsTo a委员会的事实有关。但我不知道如何解决这个问题。

EN

Stack Overflow用户

发布于 2010-10-10 23:58:16

级联删除由域类之间的belongsTo关系实现。

由于Committee belongsTo Board,当董事会被删除时,删除会级联到委员会。由于User belongsTo Committee,当委员会被删除时,删除操作会级联到用户。

问题的解决方案是删除User belongsTo Committee关系。

将域模型作为一个整体进行注释:

你有很多多对多的关系。他们不一定是错的,但他们可能会让事情变得过于复杂。您可能只需使用以下命令:

代码语言:javascript
运行
复制
class Committee {
    static hasMany = [boards: Board, users: User]
}

class Board {
    static hasMany = [users: User]
    static belongsTo = Committee // this is the only belongsTo you need, since if a
                                 // committee is dissolved, presumably the board
                                 // will be dissolved as well (unless you have
                                 // cross-committee boards)
}

class User {
    // doesn't define any relationships,
    // let the Committee/Board domains handle everything

    // also, this is presuming that users are at a higher level than committees, i.e.
    // a user could belong to multiple committees
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3897001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档