0

有 3 个用户登录了一个应用程序,例如 A、B、C。我已经实现了一个业务逻辑,如果用户 A 在数据库(比如员工对象)中保存一个对象(使用休眠),其他它将在员工表中标记为“重复”处理状态(每条记录都有一个处理状态,如成功、错误、重复)。我将保留员工对象的代码块放在同步块中。但我的问题是“当所有 3 个用户同时单击保存员工按钮时,3 个对象保存在 DB 中,同步块中的代码正在为所有 3 个用户串行执行,但它同时将对象保存在 DB 中,因为我我无法将记录标记为重复(在保存对象之前,我检查了处理状态)”。如果所有 3 个对象同时单击“保存员工”按钮,我想以一种方式保存对象,

我已经实现了如下代码

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 回答