我在Color
和Shade
之间建立了多对多关联。 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:
中理解它的方式答案 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中看到示例类。