関連するエンティティを削除し、この変更をデータベースに保存しておくと問題が発生します。grails/GORM/hibernate - 親のsave()でhasManyマップが同期していない
groovyオブジェクト親には、多くの場合、子エンティティが関連付けられています。このドメインオブジェクトを見つけてこのリストをnullに設定し、親 .save(flush:true)を呼び出すと、 子の要素がデータベースに残ります。これらが削除されていると思われたでしょうか。どんな提案も素晴らしいだろう。我々は要素を追加および削除
class Child {
belongsTo = [Parent] ... }
:
def child = new Child()
def parent = new Parent(child:child)
parent.save(flush:true) def id = parent.id //from saved entity
/// in separate transaction
parent = Parent.get(id) //id from above parent.child = null
parent.save(flush:true)
// check database - child reference still there - expect to have been deleted
我々は間違って何をやったかについての任意の提案は次のようになり
class Parent {
static hasMany = [child:Child] ... }
と子感謝。 grails 1.3.5(最新版)を使用しています。
非常に良い答えです。ブログを読む - それはそれの価値がある! – sbglasius
あなたの解決策は基本的に私が言ったことです、ちょうど私はそれをあきらめていませんでした。私は彼に関連文書を指摘した。男に魚を与えて、彼は一日食べ、男に魚を教える、彼は生涯食べる。... – hvgotcodes
これらのコメントありがとう;私はこれを働かせることができず、この段階では調査のための時間予算を持っていません。カスケード「all-delete-orphan」と「all、delete-orphan」を設定しようとしました。また、各エントリを削除し、clearを呼び出して新しい行を追加しようとしましたが、staleObject例外を保存しました。私がもう一度調査すれば、logSqlを使って休止状態がどのように動作しているかを理解し、設定をデバッグすることができますが、それは待たなければなりません。ご回答いただきありがとうございます。 – Alex