hibernate exception "Found shared references to the collection" (コレクションへの共有参照が見つかりました。
2022-03-20 13:55:33
問題あり。
ParentクラスがSonを内部に持つSetプロパティを持っていると仮定し、"from Parent"のクエリで、あるParentがSonを一つも持っていない場合、Setプロパティはnullではなく、空の集合になります。
この時点で、Parent newP=new Parent(); とし、BeanUtils.copyPropertis(newP,origP); とすると、Hibernate 例外 "Found shared references to a collection" が発生します。
注:hibernate はどの時点で "2つのオブジェクトがコレクションを共有するケースを見つけるのでしょうか?私の側の例では、次のクエリで発見されました。
理由
BeanUtils.copyPropert は浅いコピーであるため、2 つのオブジェクトが同じセットを参照することになりますが、これは hibernate では許可されていません。Hibernate リファレンス第 6 章 "Two entities may not share a reference to the same collection instance" を参照してください。
この問題は、オブジェクトをコピーするときによく発生します。
解決方法:newP.setSonSet(null);
また、同時進行のオペレーションが原因ではないかという意見もあります:http://www.blogjava.net/fastzch/archive/2006/12/22/89520.html。
ParentクラスがSonを内部に持つSetプロパティを持っていると仮定し、"from Parent"のクエリで、あるParentがSonを一つも持っていない場合、Setプロパティはnullではなく、空の集合になります。
この時点で、Parent newP=new Parent(); とし、BeanUtils.copyPropertis(newP,origP); とすると、Hibernate 例外 "Found shared references to a collection" が発生します。
注:hibernate はどの時点で "2つのオブジェクトがコレクションを共有するケースを見つけるのでしょうか?私の側の例では、次のクエリで発見されました。
理由
BeanUtils.copyPropert は浅いコピーであるため、2 つのオブジェクトが同じセットを参照することになりますが、これは hibernate では許可されていません。Hibernate リファレンス第 6 章 "Two entities may not share a reference to the same collection instance" を参照してください。
この問題は、オブジェクトをコピーするときによく発生します。
解決方法:newP.setSonSet(null);
また、同時進行のオペレーションが原因ではないかという意見もあります:http://www.blogjava.net/fastzch/archive/2006/12/22/89520.html。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例