我有下一个代码
@Transactional
public void f1() {
try {
lock();
//some logic
} catch (Exception ex) {
} finally {
releaseLock();
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void lock() {
repository.doLock();
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void releaseLock() {
repository.doReleaseLock();
}
我想要下一个行为:如果某些逻辑锁出了问题,锁将被释放。 在调试和日志中,我看到了非常奇怪的行为。 代码工作流永远不会访问。
所以,我的问题是:如果其中一个失败,则如何正确修改此代码以使3个事务全部回滚?
答案 0 :(得分:1)
简单的答案,您的代码应仅保留(带有throws语句):
@Transactional
public void f1() {
//some logic
}