0

Grailsが適切に機能している状態で1対多の関係を築くのに問題があります。私には人物インスタンスがあり、この人物は他の人物と関係があります。この関係は、関係オブジェクトで定義されます。関連するコードは次のとおりです。

class Person {
  static hasMany = [relationships:Relationship]
  String name

}

class Relationship {
   Person relationShipTo

   // Enum containing married, living together, parent etc.
   RelationshipType typeOfRelationship
}

今私が欲しいのは、永続化されるその関係への1対多の参照ですが、grailsで起こることは、relationShipToインスタンスが、他の人ではなく、他の人とこの関係を持っている人を参照しているように見えることです。 。したがって、人には関係への参照があり、その関係には、あなたが関係を持っている人へのタイプと参照があります。このためにドメインモデルを変更することはできません。私が望むことを達成する方法はありますか?

生成されたビューとコントローラーをリレーションシップに使用し、タイプとそれが参照している人物とのリレーションシップを作成しようとすると、現在何が起こっていますか。タイプのみが保持され、人物は無視されます。次に、人物の編集または作成ページで人物に追加しようとすると、追加した関係のすべてのrelationShipToプロパティが人物のIDとともに保存されます。

うまくいけば、私が書いたものが理解できるでしょう。

4

1 に答える 1

0

最後にそれが機能しました。

静的な mapsBy =[relationship: 'belongsTo'] を person に追加し、静的な belongsTo = [belongsTo: Person] を追加する必要がありました。

まさに私が望んでいた方法ではありませんが、それは機能し、妥協の余地はありません

于 2013-02-20T13:32:48.003 に答える