触发 OptimisticLockingFailureException 的代码:

@Test
public void shouldIncrementUserTotalLikesByOne() throws IllegalArgumentException, UserNotFoundException {
    databuilderService.createAll();

    User user = userService.findByEmail("[email protected]");

    long numberOfLikeCount = user.getLikeCount();

    userService.incrementUserTotalLikesByOne(user.getId());

    userService.save(user);

    long numberOfUpdatedUpdatedCount = user.getLikeCount();

    Assert.assertNotNull(numberOfUpdatedUpdatedCount);

    Assert.assertEquals(numberOfUpdatedUpdatedCount, numberOfLikeCount+1);
}

调用 UserService.save() 时发生异常:
org.springframework.dao.OptimisticLockingFailureException: Optimistic lock exception on saving entity:

最佳答案

乐观锁定异常意味着被持久化的对象已经改变了它在数据库中的状态(其他一些事务保存了对象)。

所以,这是一个特定领域的问题。你必须决定应该做什么。

基本上有两种选择:

  • 向用户显示错误。
  • 从数据库中读取对象并合并更改。有了这个,您应该假设您可能会丢失其他事务所做的修改。
  • 关于java - 如何解决 OptimisticLockingFailureException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27961402/

    10-13 05:58