【发布时间】:2009-03-17 15:57:36
【问题描述】:
在普通的一对多映射中,“一”端是关联的所有者。为什么有人会使用 belongsTo-mapping 进行这样的映射?我错过了指定 belongsTo 的一些副作用吗?
换句话说:在 GORM 中指定 belongsTo-mapping 与不指定有什么影响?
【问题讨论】:
标签: grails grails-orm
在普通的一对多映射中,“一”端是关联的所有者。为什么有人会使用 belongsTo-mapping 进行这样的映射?我错过了指定 belongsTo 的一些副作用吗?
换句话说:在 GORM 中指定 belongsTo-mapping 与不指定有什么影响?
【问题讨论】:
标签: grails grails-orm
是否指定belongsTo取决于你想要的referential action的类型。
如果您希望 Grails 执行 On Delete, CASCADE 引用操作,请指定 belongsTo。如果您希望 Grails 执行 On Delete, RESTRICT 引用操作,则不要指定 belongsTo。
例如
// "belongsTo" makes sense for me here.
class Country {
String name
static hasMany = [states:State]
}
class State {
String name;
// I want all states to be deleted when a country is deleted.
static belongsTo = Country
}
// Another example, belongsTo doesn't make sense here
class Team {
String name
static hasMany = [players:Player]
}
class Player {
String name
// I want that a team should not be allowed to be deleted if it has any players, so no "belongsTo" here.
}
希望这会有所帮助。
【讨论】:
composition(带belongsTo)和aggregation(不带belngsTo)的区别
指定belongsTo 允许Grails 透明地将更新、保存和删除级联到对象的子级。如果没有 belongsTo,如果您尝试删除主记录,如果它拥有任何详细信息,您最终会遇到外键违规。
【讨论】: