4

車とガレージの2つのクラスがあります。それらは am:n 関係にあるため、1 つの車には多くの車庫があり、1 つの車庫には多くの車があります。

私のデータベースには、関係が保存されているgarage_has_carテーブルがあります。私はガレージに車に属している設定を構成しました

static belongsTo = [  Garage ]

ガレージの車のコレクションをクリアして保存すると、garage_has_car テーブルの対応するエントリが削除されます。

しかし、車のガレージ コレクションをクリアして保存すると、garage_has_car テーブル内の対応するエントリが削除されません。

どうすればこの動作を達成できますか?

UPDATE 1 (関係定義の追加):

Garage での関係は次のとおりです。

cars column:'deskriptor_id',joinTable:'garage_has_cars'

カーズでは

static belongsTo = [  Garage ]
garages column:'car_id',joinTable:'garage_has_cars'

私も IRC でこの質問をしましたが、誰かが答えました:

(...) grails の多対多の関係は、常に一方向のみにカスケードされます。また、Grails での多対多の関係は、休止状態でのマッピング方法が非常に非効率的です。それらを使用しないでください。1 台の車と 1 台のガレージを持つ joinclass ドメイン オブジェクト CarGarage を作成します。クラスの車とガレージのプロパティをトランジェントにし、関係を維持するために結合クラスを使用する車とガレージのクラスに get メソッドと add メソッドを追加します。また、結合クラスでバージョン管理を無効にしたい場合は、このプレゼンテーションhttp://burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdfにいくつかの情報があり、そのメモは次のとおりです。 Grails: hasMany/belongsTo を使用しない多対多 - 代わりにネイティブ 3NF を使用 - 全文検索

私と同じ問題を抱えている人に役立つかもしれないので、この引用を投稿します。これらの変更を実装する時間があれば、この質問も更新します。

4

1 に答える 1

2

未回答リストから削除するために回答するだけです。

(...) grails の多対多の関係は、常に一方向のみにカスケードされます。また、Grails での多対多の関係は、休止状態でのマッピング方法が非常に非効率的です。それらを使用しないでください。1 台の車と 1 台のガレージを持つ joinclass ドメイン オブジェクト CarGarage を作成します。クラスの車とガレージのプロパティをトランジェントにし、関係を維持するために結合クラスを使用する車とガレージのクラスに get メソッドと add メソッドを追加します。また、結合クラスでバージョン管理を無効にしたい場合は、このプレゼンテーション http://burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdfにいくつかの情報が あり、そのメモは次のとおりです。 Grails: hasMany/belongsTo を使用しない多対多 - 代わりにネイティブ 3NF を使用 - 全文検索

于 2013-04-01T16:25:10.627 に答える