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可以抛出什么运行异常?
基础教程推荐
- 如何对 Java Hashmap 中的值求和 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 修改 void 函数的输入参数,然后读取 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
