我有以下域名
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委员会的事实有关。但我不知道如何解决这个问题。
发布于 2010-10-10 23:58:16
级联删除由域类之间的belongsTo关系实现。
由于Committee belongsTo Board,当董事会被删除时,删除会级联到委员会。由于User belongsTo Committee,当委员会被删除时,删除操作会级联到用户。
问题的解决方案是删除User belongsTo Committee关系。
将域模型作为一个整体进行注释:
你有很多多对多的关系。他们不一定是错的,但他们可能会让事情变得过于复杂。您可能只需使用以下命令:
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
}https://stackoverflow.com/questions/3897001
复制相似问题