Có một thực thể:mùa xuân dữ liệu: rollback giao dịch trên retry
@Entity
class A {
...
@Version
int version;
}
A
trường cập nhật được thực hiện theo cách lạc quan:
@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);
}
Như đã nêu trong bình luận, dường như giao dịch mà không rollbacked khi StaleStateException
xảy ra, vì vậy ví dụ B
được lưu trên mỗi lần thử lại.
Có thể quay lại giao dịch khi thử lại không?
Hành vi mong muốn là b
chỉ được lưu trên bản cập nhật thành công a
.