Spring Boot中使用@Transaction注解的方法如何级联异常?

问题描述 投票:0回答:1

看下面的例子:

我们有

UserSerice
类,它有一个方法
invoice()
,它调用
createPdf
中的另一个方法
InvoiceService

如果在

DataIntegrityViolationException
中抛出,我想处理
invoice
- 这是调用方法

@Service
public class UserService {

    @Autowired
    private InvoiceService invoiceService;

    @Transactional
    public void invoice() {
        invoiceService.createPdf();
        // send invoice as email, etc.
    }
}

@Service
public class InvoiceService {

    @Transactional
    public void createPdf() throws DataIntegrityViolationException {
        // ...
    }
}

我尝试使用

@Transactional(propagation = Propagation.NEVER)
上的
createPdf
来强制spring使用一次JDBC连接,但是没有成功

spring spring-boot transactions spring-jdbc
1个回答
0
投票

这是人们可以解决的问题。 DataIntegrityViolationException 被发送回调用服务

@Service
public class InvoiceService {

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void createPdf() throws DataIntegrityViolationException {
        // ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.