【发布时间】:2018-05-24 10:09:09
【问题描述】:
有一个实体:
@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);
}
如 cmets 中所述,似乎在发生StaleStateException 时事务没有回滚,因此每次重试时都会保存B 实例。
是否可以在重试时回滚事务?
所需的行为是 b 仅在成功更新 a 时保存。
【问题讨论】:
标签: java hibernate spring-boot spring-data optimistic-locking