3

GORM マッピングの特殊性に遭遇しました。

私がテーブルごとに期待しているのは

models
designs (model_id -> models.id)
categories
categories_design (category_id, design_id)

デザインで model_id を取得するには、マップ構文を使用します

static belongsTo = [model:Model]

だから今、デザインとカテゴリーの間にも hasMany 関係があり、所有側はデザインです。

GORM マニュアルには、非マップ構文を使用して所有側を示すように記載されています

static belongsTo = Category

しかし、マップ表記を使用するデザインからモデルへの逆参照も必要です。

私の質問は、2つのケースをどのように混合するのですか?

私はデザインで試しました:

static belongsTo = [model:Model, category:Category]

これにより、実行時エラーが発生します - 多対多の関係にあるドメイン クラス Category と Design の間に所有者が定義されていません。

static belongsTo = [model:Model, Category]

これにより、コンパイル エラーが発生します。

static belongsTo = [Model, Category] 

予想される model_id がデザインで作成されず、代わりに、models_designs のまったく新しいテーブルが作成されますが、これは正しくありません。しかし、すべてがコンパイルされて実行されます。

4

1 に答える 1

0

Design と Category の間に hasMany 関係があり、Design が所有側である場合、

static hasMany = [category: Category] in Design class 

static belongsTo = Design in Category class.

このように、あなたはまだ維持することができます

static belongsTo = [model:Model]

デザインクラスで。

于 2012-11-05T19:29:07.903 に答える