繁体   English   中英

如何重写默认的Spring JPA异常转换器行为?

[英]How to override default Spring JPA exception translator behavior?

我不知道这种方法是否是最好的。 但是我有一个需要处理Spring JPA存储库(DAO层)异常的需求。 从某种意义上讲,句柄可以将其推广到UI或在服务层上做一些逻辑。

现在,根据当前方案,所有存储库中的所有SQL异常都包装到运行时异常DataAccessException中。

现在,如果我想将此异常传播到我的UI层,则比在服务层上捕获此运行时异常并将此异常包装到我的“自定义异常”中进行传播的方法要好。 但我不想捕获此运行时异常。 有什么方法可以替代Spring JPA的异常转换器行为,并使它将所有SQL异常包装到我的Custom Checked异常中? 如果我能够做到这一点,我认为这种方法更好。

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

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

否则你应该去

JPA JPA

Spring JPA将所有异常转换为Spring的DataAccessException,在DAO层中处理这些异常没有害处。 IMO,即使您可以覆盖spring JPA的异常转换行为,您为什么还要这么做? 因为没有与此相关的业务评估师。

在下面的线程中进行类似的讨论: Spring / JPA / JSF的异常处理策略

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM