Java 在Spring中,如何在一个事务方法中管理多个事务?
我有下一个密码Java 在Spring中,如何在一个事务方法中管理多个事务?,java,spring,spring-mvc,spring-data-jpa,spring-data,Java,Spring,Spring Mvc,Spring Data Jpa,Spring Data,我有下一个密码 @Transactional public void f1() { try { lock(); //some logic } catch (Exception ex) { } finally { releaseLock(); } @Transactional(propagation = Propagation.REQUIRES_NEW) public void lock() { repo
@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个事务,如果其中一个事务失败,它们将一起回滚 简单回答,您的代码应该只保留以下语句:
@Transactional
public void f1() {
//some logic
}
1.您抑制了异常。2.你搞乱了事务概念——有3个事务,如果其中一个失败,它们将一起回滚——这根本没有意义。事务是一组操作/动作,如果出现问题,这些操作/动作将一起回滚。您的3个事务不是事务,而是针对一个且仅针对一个事务的3个操作。