有3个用户登录了应用程序,例如A,B,C。如果用户A在DB中保存一个Object(使用hibernate)(比如Employee对象),我已经实现了一个业务逻辑,它将在Employee表中标记为“重复”处理状态(每个记录都有一个处理状态,如成功,错误,重复)。我把员工对象持久化的代码块放在同步块中。但我的问题是“当所有3个用户同时点击保存员工按钮时,3个对象被保存在DB中,同步块中的代码正在为所有3个用户串行执行但是由于那个我同时将对象保存在DB中我无法将记录标记为重复(在保存对象之前,我检查了处理状态)“。我想逐个保存对象意味着如果所有3个点击同时保存Employee按钮,则先在同步块中输入的线程应该保存员工对象1st以便我可以将记录复制给其他。
我已经实现了以下代码
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
如果第一位用户成功保存记录。但我无法获得“其他用途成功”的记录状态
请帮助
由于
答案 0 :(得分:0)
保存对象后,您将状态设置为“成功”。因此,状态不会持续存在。
您需要在对象上设置状态“成功”,然后保存。