这里有一个实体:
@Entity
class A {
...
@Version
int version;
}
乐观方式实现A
实例更新:
@Transactional(rollbackFor = {StaleStateException.class})
@Retryable(value = {StaleStateException.class})
public void updateA() {
A a = findA();
B b = new B();
// Update "a" somehow
a.update();
// "b" is saved on each retry!
save(b);
}
如评论所述,当StaleStateException
发生时,似乎事务并没有回滚,因此每次重试都保存了B
实例。
是否可能在重试时回滚事务?
期望的行为是只有在成功更新a
时才保存b
。