列の1つに一意の制約が定義されているデータベーステーブルがあります。複数のスレッドを持つメッセージ処理システムもあります。メッセージが消費されているため、2つのメッセージに同じ値(一意の制約が定義されている列の値)を持つ同じエンティティが含まれている場合があります。したがって、コードでは、サービスレイヤーは最初にこの一意のフィールドを使用して(休止状態の名前付きクエリを介して)データベースにクエリを実行し、最初にレコードが存在するかどうかを確認します。そうでない場合は、新しいレコードを挿入します。この一意のフィールドを持つレコードがすでに存在する場合、レコードを挿入する代わりに、レコードを更新し、別のテーブルに子レコードも挿入します。
2番目のスレッドがレコードがまだ存在しないと判断して挿入しようとする問題が発生しています。しかし、この時点で、最初のスレッドはすでにレコードを正常に挿入しています。そのため、一意の制約の違反について例外がスローされます。hibernate / oracleソリューションを使用してこの種の状況を処理するための最良の方法は何ですか?ある種のロックオプションが必要ですか?ありがとう。