java - 如何覆盖默认的 Spring JPA 异常翻译器行为?

标签 java hibernate exception jpa-2.0 spring-data-jpa

我不知道这种方法是否最好。但是我有一个要求,我需要处理 Spring JPA 存储库(DAO 层)异常。从某种意义上说,处理可能是将其传播到 UI,或者可能是在服务层执行一些逻辑。

现在根据来自多个存储库的当前情况,我们所有的 SQL 异常都被包装到运行时异常 DataAccessException 中。

如果我想将此异常传播到我的 UI 层,现在有一种方法是在服务层捕获此运行时异常并将此异常包装到我的自定义异常中,然后传播它。但是我不想捕获这个运行时异常。有什么方法可以覆盖 Spring JPA 的异常翻译器行为,并将所有 SQL 异常包装到我的 Custom Checked 异常中吗?如果我能够做到这一点,我认为这种方法更好。

最佳答案

关于 TransactionSystemException 的问题:在退出 @Transactional 方法 时抛出此异常,以指示事务已回滚。

如果你想可靠地捕获约束违规,你需要围绕事务而不是在事务内部进行。例如,通过在 saveUser() 方法而不是 @Transactional 中使用编程事务划分,或者通过将 try-catch 子句添加到顶级方法。

或者你应该访问

JPA JPA

关于java - 如何覆盖默认的 Spring JPA 异常翻译器行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434853/

相关文章:

java - 如何在 Mat 对象中插入一条线或矩形(openCV)

java - NoSuchMethodError : buildSessionFactory using Hibernate 5. 1.0 和 c3p0

java - JPA 单向 ManyToMany - 检索列表时的重复位置

java - 如何捕获通过读取和写入文件将引发的所有异常?

c# - 调用相同的函数直到它连接到服务器

java - 锁定问题: needs some brainstorming suggestions

java - 使用处理程序 (JAX-WS) 获取端点的 Url

java - 从 int 创建时钟格式

java - Hibernate不会从模型到数据库生成表

java - 由 : There is no result type defined for type 'chain' mapped with name 'success' 引起