一意のフィールドを持つエンティティ A があり、そのフィールドは基本的にエンティティを定義します。つまり、等しい場合、エンティティもまったく同じです。
2 つ目のポイントは、その制約に違反したとしても決して例外ではないということです。つまり、ユーザーが重複を入力しようとすることは十分に予想されます。
重複の場合、アプリケーションは既存のエンティティを黙って選択する必要があります。私の質問は、特に As のリストを含むエンティティを保存するときに何をすべきかです。
- 例外をキャッチしてそこから移動するだけです
DataIntegrityViolationException は、Cascaded persist の場合にどのエンティティが影響を受けたかなど、簡単に処理できる情報を保持していないため、これがそれほど簡単に可能かどうかはわかりません!!!
- 保存(永続化)する前に確認し、送信されたエンティティを既存のもの(ID セットを持つ)に置き換えます
私はこれをもっと気に入っていますが、単一の挿入ごとに挿入の前に複数の選択 (存在チェック) が行われる可能性があるため、かなりのオーバーヘッドがあります。
より良いアプローチは何ですか?