springjpa:意外的回滚异常隐藏了我需要处理的实际异常

bgibtngc  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(364)

我正在试验 @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` . 当然,我希望回滚发生,只是希望避免异常,以便使用实际的异常。
如何获取实际异常以进行处理?
jjjwad0x

jjjwad0x1#

就连我以前也遇到过类似的问题。我通过为添加回滚来处理它。下面是我如何处理的。
导入的org.springframework.transaction.annotation.transactional
然后,我在服务方法上方使用@transactional(rollbackor=exception.class),而不是@transactional
这将处理任何运行时异常。所以,dataintegrityviolationexception应该显示给用户。

相关问题