Spring Data JPA - 如何使用相同的TransactionManager创建多个事务边界

时间:2015-11-25 01:21:41

标签: spring jpa

我有一项服务,必须按顺序执行以下步骤。

1) insert database records
2) commit
3) call external service (This service need to see the inserts in step 1)
4) more inserts
5) commit

目前,外部服务无法查看插入的行。 请建议如何在外部调用之前进行提交。我正在使用Spring JPA / Hibernate。

由于

1 个答案:

答案 0 :(得分:0)

您需要确保在自己的事务中运行这两个操作,并确保在T2执行之前提交T1。您还需要了解此讨论:

Spring @Transaction method call by the method within the same class, does not work?

鉴于上述情况应该起作用:

@Service
public class ClientService{

    @Autowired
    private RecordsService recordsService;

    @Autowired 
    private ExternalService externalService;

    public void insert(){
        recordsService.insertRecords();
        externalService.insertRecords();
    }
}

@Service
public class RecordsService{

    @Transactional
    public void insertRecords(){

    }
}

@Service
public class ExternalService{

    @Transactional
    public void insertRecords(){

    }
}