【发布时间】:2021-12-13 03:41:26
【问题描述】:
在我的应用程序中,我遇到了这样一种情况,即在插入数据库时,抛出运行时异常,从而回滚整个事务,这是预期的。
但是我们如何从 Controller 中识别当事务成功提交时被回滚以相应地发送响应。
提前致谢。
【问题讨论】:
-
通过(尝试并)在您的控制器中捕获(/任何)运行时异常...!?
-
如果这还不够,您可以gain "complete control" of the (current) transaction,但必须将状态传播到控制器...
-
考虑使用更简洁的代码,而不是 try/catch ``` @ControllerAdvice @RestController public class RestExceptionHandler { @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler(Exception.class) public ResponseEntity
exceptionHandler (异常 e,WebRequest 请求){ log.error(request.getDescription(false)); log.error(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase() + e.getMessage(), e);返回新的 ResponseEntity(e.toString(), HttpStatus.INTERNAL_SERVER_ERROR); ``` -
如果我明确抛出运行时异常,事务会回滚吗?
标签: java spring-boot hibernate spring-transactions