我正在试验 @transactional
在Spring Boot里。我已经编写了一个包含多个表插入的服务,如果有任何异常,我希望整个过程都回滚。
这工作得很好,但不是抛出导致回滚的实际异常,而是 Unexpected Rollback Exception
```
@transactional
public void insertIntoTables(){
repositoryone.save(new Table1());
repositorytwo.save(new Table2()); //expecting data integrity violation exception on this line
}
而不是扔掉 `DataIntegrityViolationException` ,上面的代码抛出 `Unexpected Rollback Exception` . 当然,我希望回滚发生,只是希望避免异常,以便使用实际的异常。
如何获取实际异常以进行处理?
1条答案
按热度按时间jjjwad0x1#
就连我以前也遇到过类似的问题。我通过为添加回滚来处理它。下面是我如何处理的。
导入的org.springframework.transaction.annotation.transactional
然后,我在服务方法上方使用@transactional(rollbackor=exception.class),而不是@transactional
这将处理任何运行时异常。所以,dataintegrityviolationexception应该显示给用户。