6

たとえば、grails の hasOne 関係で子オブジェクトを削除するにはどうすればよいですか。

class Face {
 static hasOne = [nose: Nose]
}
class Nose {
 Face face
 static belongsTo= Face
}

2つの方法で子オブジェクトを削除してみました

1. face.nose.delete()
2. nose.delete()

どちらの方法でも、常に同じ例外 Deleted object resaved by cascade が発生します。もう 1 つ、hasOne の動的メソッド (hasMany の addTo や removeFrom など) はありますか? 何か助けはありますか?

4

3 に答える 3

4

あなたは試すことができます

face.nose = null
face.save()
nose.delete()

鼻だけを削除すると、プロパティ face.nose は設定されたままになります。後で face.save() を呼び出すと、鼻が再保存されます。

face.nose = null (保存せずに) のみを設定した場合、変更はデータベースに保存されません。顔を取得するためのデータベースへの後でクエリを実行すると、鼻が設定された顔が得られ、save() がそれを再保存します。

于 2010-07-30T14:23:36.827 に答える
0

次のようにクラスを作成してみてください。

class Face {
        Nose nose
}

class Nose {    
        static belongsTo = Face
}

次に、tryを削除します。

def f = Face.get(1)
f.nose.delete()
f.delete()
于 2010-07-28T15:49:21.217 に答える