0

アプリケーションにログインしている 3 人のユーザー (たとえば、A、B、C) がいます。ユーザーAがDB(従業員オブジェクトなど)にオブジェクト(hibernateを使用)を保存する場合、ビジネスロジックを実装しました。これは、従業員テーブルで「重複」処理状態としてマークされます(すべてのレコードには、成功、エラー、重複などの処理状態があります) )。同期ブロックに従業員オブジェクトを永続化したコードブロックを入れました。しかし、私の問題は、「3人のユーザー全員が従業員の保存ボタンを同時にクリックすると、3つのオブジェクトがDBに保存され、同期ブロックのコードが3人のユーザー全員に対してシリアルに実行されますが、オブジェクトが同時にDBに保存されるためです。レコードを重複としてマークできません (オブジェクトを保存する前に、処理状態をチェックしています)。3つすべてが[従業員の保存]ボタンを同時にクリックした場合、オブジェクトを1つずつ保存したいのですが、

私は以下のようにコードを実装しました

synchronized(this){
   find processing state of each records.
   if record is have success status mark as duplicate
   else save the object in DB with status proccesing (by using hibernate)
   save function is {
            session().save(object) (hibernate session )
            session().flush();
      }
   // do some other work 

  update the records status success
}// close the synchronized block 

最初のユーザーがレコードを正常に保存した場合。しかし、私はレコードステータス「他の使用のための成功」を取得できません

助けてください

ありがとう

4

1 に答える 1

0

オブジェクトを保存した後、ステータスを「成功」に設定しています。このため、ステータスは永続化されません。

オブジェクトにステータス「成功」を設定してから保存する必要があります。

于 2013-09-16T06:31:16.243 に答える