問題と解決策を持続させるために渡される分離された実体
JPAのセーブオブジェクトでは、問題のようなエラーが発生することがありますが、これには2つの原因があります。
1. オブジェクトがidを自動生成するように定義されており、挿入時に書き込んだidが既にデータベースに存在している。
インターネット検索はこのケースが多いのですが、個人的には、実際のプロジェクトでは、自分でidを書くことになる新しいオブジェクトを生成するのは珍しいケースを演じていると思うのです。
2. 私は実際にプロジェクトは、シナリオが発生しました:オブジェクトAとオブジェクトBの一対多の関係は、つまり、Aはセット<B>型のメンバーが含まれて、フロントエンドは、データの束を渡すには、背景には、これらのデータをBオブジェクトに組み立てて、データベースに保存し、生成オブジェクトはこのセットの下に設定します;B>メンバ。
しかし、いくつかの複雑な論理的な理由から、ここでは直接設定するデータベース保存成功したBオブジェクトを取るのではなく、List<B>(すなわち、アセンブリの先頭を取るために。オブジェクトの新しいフロントエンドから渡されたデータ)とデータベースのデータ比較によると、同じ主キーのビジネスが存在していたと見なされ、その後、Listの前面に設定されたIDを取り出す<B> 実際には、このBオブジェクトが主キーを設定するすでに存在しているが、オブジェクトはまだ(ハイバーネートのいくつかの状態については、デタッチ状態にある参照してください)、。 ハイバーネートの3つの状態を深堀りする を挿入するために、新しいオブジェクトとして保存されます。
表す図。
もちろん、解決策は、保存する新しいオブジェクトの代わりに、データベースから照会されたオブジェクトを使用することです。
関連
-
javaの非静的メソッドを静的に参照することができない
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
ジャバアレイ
-
Javaがテキストファイルを読み込む
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
コンストラクタDate()が未定義である問題
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
FTPサーバ機能のJava実装
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
プロジェクトの依存関係を解決できない。
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
Java:未解決コンパイル問題の解決方法
-
Zipファイルの圧縮・解凍にantを使用する
-
コレクション - PriorityQueueソースコード解析
-
Prologでは、コンテンツは許可されていません。