1

との間には多対多の関連が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テーブルとテーブルに保存するだけで、本質的に2つの間の結合テーブルであるテーブルには保存し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 に答える