2016-05-16 56 views
0

我运行多线程Java应用程序将那些从Oracle数据库中查询,如果条件符合,它会更新一行。但多线程获得同一行的状态的可能性很高,然后多线程尝试更新同一行。休眠更新查询混乱

比方说,如果状态为“已接受”任何行,然后更新其为“处理”状态,然后开始处理,但处理只能由一个线程谁更新此记录来完成。

一种方法是我查询数据库,如果状态为“已接受”,然后更新记录,我需要写同步的Java方法,但是这将阻止多线程。所以我想为这种情况使用sql方法。

休眠更新方法返回类型为void。所以我无法找到现在行更新还是已经更新。是否有任何选择更新或任何锁定的东西在休眠,可以帮助我在这种情况下。

回答