grails中的多对多不保存关系表中的记录

时间:2013-02-18 17:13:54

标签: grails many-to-many gorm

我在ColorShade之间建立了多对多关联。 Color有很多色调,Shades有很多种颜色。

我这样建模:

class Color {
  static hasMany = [shades: Shade]
  String name
}

class Shade {
  static belongsTo = Color
  static hasMany = [colors: Color]
  String name
}

但是,当我运行以下代码时:

new Color(name: "Red").addToShades(new Shade(name: "light")).save()

它只保存Color表和Shade表中的记录,但不保存在Color_Shades表中,而{{1}}表本质上是两者之间的连接表。

我做错了吗?多数民众赞成我从docs

中理解它的方式

1 个答案:

答案 0 :(得分:1)

我不确定为什么你的桌子没有填充,但是在this talk中有关于使用这种多对多的性能的Burt的建议。解决方案是使用中间类:

class ColorShade implements Serializable {

  Color color

  Shade shade

  //implement hashcode & equals!
  //and also implement helpers like removeAll, remove, create and get.

  static mapping = {
    id composite: ['color','shade']
    table 'Color_Shades'
    version false
  }
}

您可以在Spring Security Core plugin中看到示例类。