我有一项服务,必须按顺序执行以下步骤。
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。
由于
答案 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(){
}
}