抽象クラスを使用して Grails ドメイン モデルを定義しようとしています。相互に 1 対 1 の双方向関係を持つ 2 つの抽象クラスを定義する必要があり、それらを機能させることができません。
ドキュメントの Face-Nose の例に基づく説明:
私はこの例を実装し、期待どおりに動作するテストを作成しました。関係の終わりを設定すると、grails はもう一方の端を設定します。
class Face {
static hasOne = [nose:Nose]
static constraints = {
nose nullable: true, unique:true
}
}
class Nose {
Face face
static belongsTo = [Face]
static constraints = {
face nullable:true
}
}
when:'set a nose on the face'
def testFace = new Face().save()
def testNose = new Nose().save()
testFace.nose = testNose
testFace.save()
then: 'bidirectional relationship'
testFace.nose == testNose
testNose.face == testFace
これら 2 つのクラスを抽象クラスとして宣言し、2 つの具象サブクラス (ConcreteFace と ConcreteNose 属性なし) で同じテストを繰り返すと、2 番目のアサーションは false になります: testNose.face は null です。
私は何か間違ったことをしていますか?そうでない場合、どうすれば抽象ドメイン クラスの関係を因数分解できますか?