0
我使用Spring数据JPA与Hibernate作为PostgreSQL上的持久性提供者。我试图提供悲观锁定:悲观锁定失败ObjectOptimisticLockingFailureException
public interface MediaRepository extends JpaRepository<Media, Long>, MediaRepositoryCustom {
Long countByCreatedBy(User creator);
@Query("select m from Media m where m.id = ?1")
@Lock(LockModeType.PESSIMISTIC_WRITE)
Media findOneAndLock(Long id);
}
我尝试从2个主题中调用findOneAndLock
。我期望如果Thread A
锁定对象,Thread B
应该等到锁定释放。而是Thread B
抛出org.springframework.orm.ObjectOptimisticLockingFailureException
。
我确定两个线程都执行select for update(数据库日志中的2个这样的记录)。
中指定等待期,它已被设置。 – skozlov
什么是价值?而第二个线程将只等待配置的时间,而不是无限期地等待。 – Rohit
10000.再次,我捕获org.springframework.orm.ObjectOptimisticLockingFailureException。 – skozlov