【发布时间】:2016-05-16 11:32:28
【问题描述】:
我正在运行具有多个线程的 java 应用程序,这些线程将从 oracle 数据库中查询,如果满足条件,它将更新行。但是很有可能多个线程在一行中获得相同的状态,然后多个线程尝试更新同一行。
假设任何行的状态为“ACCEPTED”,然后将其更新为“PROCESSING”状态,然后开始处理,但处理应仅由更新此记录的一个线程完成。
一种方法是我查询数据库,如果状态是“接受”然后更新记录,我需要编写同步的 java 方法,但这会阻塞多线程。所以我想针对这种情况使用sql方式。
Hibernate 更新方法返回类型为 void。因此,我无法找到 row 是现在更新还是已经更新。在这种情况下,是否有任何 Select for Update 或休眠中的任何锁定东西可以帮助我。
【问题讨论】:
标签: java hibernate oracle-sqldeveloper hibernate-criteria