Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring中,如何在一个事务方法中管理多个事务?_Java_Spring_Spring Mvc_Spring Data Jpa_Spring Data - Fatal编程技术网

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个操作。