1

Color我在和之间有一个多对多的关联ShadeColor有很多色调,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本质上是两者之间的连接表。

难道我做错了什么?这就是我从文档中理解的方式:

4

1 回答 1

1

我不确定为什么你的表没有被填充,但是 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 插件中看到一个示例类。

于 2013-02-18T17:49:57.427 回答