Java hibernate无法在数据库中按顺序保存对象
有3个用户登录到一个应用程序中,比如a、B、C。我已经实现了一个业务逻辑,如果用户a将对象(使用hibernate)保存在DB(比如Employee对象)中,它将在Employee表中标记为“重复”处理状态(每个记录都有一个处理状态,如成功、错误、重复)。我将employee对象持久化所在的代码块放在同步块中。但我的问题是“当所有3个用户同时单击SaveEmployee按钮时,3个对象保存在DB中,同步块中的代码为所有3个用户串行执行,但它同时将对象保存在DB中,因为我无法将记录标记为重复(在保存对象之前,我检查了处理状态)”。我想一个一个地保存对象如果所有3个都同时单击SaveEmployee按钮,则在同步块中首先进入的线程应首先保存Employee对象,以便我可以将记录标记为重复给其他线程 我已经实现了如下代码Java hibernate无法在数据库中按顺序保存对象,java,multithreading,hibernate,Java,Multithreading,Hibernate,有3个用户登录到一个应用程序中,比如a、B、C。我已经实现了一个业务逻辑,如果用户a将对象(使用hibernate)保存在DB(比如Employee对象)中,它将在Employee表中标记为“重复”处理状态(每个记录都有一个处理状态,如成功、错误、重复)。我将employee对象持久化所在的代码块放在同步块中。但我的问题是“当所有3个用户同时单击SaveEmployee按钮时,3个对象保存在DB中,同步块中的代码为所有3个用户串行执行,但它同时将对象保存在DB中,因为我无法将记录标记为重复(在保
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
如果第一个用户成功保存记录。但我无法获得记录状态“其他用途成功”
请帮忙
谢谢保存对象后,您正在将状态设置为“成功”。因此,中的状态不会持久化
您需要在对象上设置状态“Success”,然后保存它。您是在同步块内提交事务还是在同步块外提交?在同步块内提交事务,然后在块外更新相同的记录。