7

在普通的一对多映射中,“一”方是关联的所有者。为什么有人会使用 belongsTo-mapping 进行这样的映射?我错过了指定 belongsTo 的一些副作用吗?

换句话说:在 GORM 中指定 belongsTo-mapping 与不指定有什么影响?

4

2 回答 2

19

是否指定belongsTo取决于您想要的引用操作的类型。

如果您希望 Grails 执行On Delete、CASCADE引用操作,请指定belongsTo。如果您希望 Grails在删除时执行 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. 
}

希望这可以帮助。

于 2009-03-18T03:23:46.050 回答
2

指定belongsTo 允许Grails 透明地将更新、保存和删除级联到对象的子级。如果没有 belongsTo,如果您尝试删除主记录,如果它拥有任何详细信息,您最终会遇到外键违规。

于 2009-03-17T17:48:14.600 回答