@Transactional(rollbackFor = Exception.class)
public void test(){
CompletableFuture cf1 = CompletableFuture.runAsync(()-> dbMapper.insert());
CompletableFuture cf2 = CompletableFuture.runAsync(()->{
dbMapper.insert();
throw new RuntimeException();
});
CompletableFuture.allOf(cf1, cf2).join(); // this will throw CompletionException
}
在以上代码中,当insert()
引发任何异常时,我想回退cf1
和cf2
中的join()
操作。但是实际上没有回滚发生。
如何使其起作用?还是还有其他方法?