車とガレージの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 を使用 - 全文検索
私と同じ問題を抱えている人に役立つかもしれないので、この引用を投稿します。これらの変更を実装する時間があれば、この質問も更新します。