看下面的例子:
我们有
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连接,但是没有成功
这是人们可以解决的问题。 DataIntegrityViolationException 被发送回调用服务
@Service
public class InvoiceService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createPdf() throws DataIntegrityViolationException {
// ...
}
}