What RuntimeException can Spring CrudRepository throw?(Spring CrudRepository可以抛出什么运行异常?)
问题描述
我有这个Spring数据CrudRepository
,它处理数据库上的CRUD操作。
@Repository
public interface IUserRepository extends CrudRepository<User, String> {
}
User
是My DB的用户表的实体。CrudRepository
将以下操作添加到存储库:
delete(String ID)
findOne(String ID)
save(User user)
如documentation中所述,如果给定的id为空,则删除和查找操作将引发IllegalArgumentException
,而保存操作不会引发任何异常。
问题是CrudRepository的javadoc没有提到这些操作引发的其他异常。例如,它不会告诉delete(String ID)
操作在提供的ID在数据库中不存在的情况下抛出EmptyResultDataAccessException
。
在save(User user)
操作的javadoc中,不清楚在插入违反一个数据完整性约束(唯一字段和外键)的新用户时抛出哪些异常。此外,无论您编写的是新用户还是现有用户,它都不会发出警告:它只是创建一个新用户或覆盖(如果存在)(因此这是一个插入+更新操作)。
在企业应用程序中,我应该能够捕获操作可以引发的每个可抛出的异常,并且我应该在操作的javadoc中阅读这一点。
您是否了解有关CrudRepository
异常的明确文档?
推荐答案
Spring具有内置的异常转换机制,因此JPA持久化提供者抛出的所有异常都会转换为Spring的DataAccessException--对于所有带有@Repository(或已配置)的Bean。
主要有四个组-
NonTransientDataAccessException-除非纠正异常原因,否则相同操作的重试将失败。因此,如果您传递不存在的id,它将失败,除非该id存在于数据库中。
RecoverableDataAccessException--经过一些恢复步骤后,它们与前面的"相反"--可以恢复的异常--相反。更多详情请查看API文档
/li>ScriptException-尝试处理格式不正确的脚本时与SQL相关的异常。
TransientDataAccessException-这些是无需任何显式步骤即可恢复的例外情况,例如,当数据库超时时,您将在几秒钟后重试。
也就是说,查找有关所有异常的文档的理想位置--在API本身--只需浏览DataAccessException的层次结构。
这篇关于Spring CrudRepository可以抛出什么运行异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring CrudRepository可以抛出什么运行异常?
基础教程推荐
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01