1

orphan-removal="true" および Cascade.ALL でマップされた Parent クラスに @OneToMany 関係があります。

まず、親オブジェクトを永続化します。

次に、次のように、ManagedBean で親を複製します。

Parent newParent = (Parent) org.apache.commons.lang.SerializationUtils.clone(this.object);

、ユーザーがいくつかの変更を加えて、[保存] ボタンをクリックできるようにします。

この時点で、newParent を永続化しますが、次のエラーが発生します。

##"原因: org.hibernate.HibernateException: cascade="all-delete-orphan":package.Parent.children でコレクションへの参照を変更しないでください"##

関係が必要ないため、このエラーが発生する理由が本当にわかりません。親を最初に永続化したとき、この関係に何も設定しなかったので、問題なく動作しました。

クローン作成後に問題が発生したようですが、その理由はわかりません!

誰かがこれで私を助けてくれますか?

ありがとう。

4

1 に答える 1

0

Hibernate は、親をロードしたときにいくつかの参照を提供しました。hibernate が提供した孤立除去コレクションの参照が表示されない場合、親を再び永続化することはできません。これらのコレクションでできることは、アイテムを追加または削除することですが、常に参照を保持します。

なんらかの特別な理由で参照を失った場合は、親を再度ロードし、hibernate が提供する新しい参照を使用します。

于 2013-06-14T15:35:07.073 に答える