Spring JPA:意外回滚异常隐藏了我需要处理的实际异常
Spring JPA: Unexpected rollback exception hides the actual exception I need to handle
我正在 spring 引导中试验 @transactional
。我已经编写了一个包含多个 table 插入的服务,如果有任何异常,我希望整个过程回滚。
这工作正常但不是抛出导致回滚的实际异常,我得到 Unexpected Rollback Exception
@transactional
public void insertIntoTables(){
repositoryone.save(new Table1());
repositorytwo.save(new Table2()); //expecting data integrity violation exception on this line
}
上面的代码抛出 Unexpected Rollback Exception
而不是抛出 DataIntegrityViolationException
。我当然希望回滚发生,只是想避免异常,以便我可以使用实际的异常。
如何获取用于处理目的的实际异常?
我以前也遇到过类似的问题。我通过添加回滚来处理它。以下是我的处理方式。
- 进口org.springframework.transaction.annotation.Transactional
- 然后我在服务方法上方使用了@Transactional(rollbackFor = Exception.class) 而不是@Transactional
这将处理任何运行时异常。因此,应该向用户显示 DataIntegrityViolationException。
我正在 spring 引导中试验 @transactional
。我已经编写了一个包含多个 table 插入的服务,如果有任何异常,我希望整个过程回滚。
这工作正常但不是抛出导致回滚的实际异常,我得到 Unexpected Rollback Exception
@transactional
public void insertIntoTables(){
repositoryone.save(new Table1());
repositorytwo.save(new Table2()); //expecting data integrity violation exception on this line
}
上面的代码抛出 Unexpected Rollback Exception
而不是抛出 DataIntegrityViolationException
。我当然希望回滚发生,只是想避免异常,以便我可以使用实际的异常。
如何获取用于处理目的的实际异常?
我以前也遇到过类似的问题。我通过添加回滚来处理它。以下是我的处理方式。
- 进口org.springframework.transaction.annotation.Transactional
- 然后我在服务方法上方使用了@Transactional(rollbackFor = Exception.class) 而不是@Transactional
这将处理任何运行时异常。因此,应该向用户显示 DataIntegrityViolationException。