微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Spring CrudRepository异常

我有这个 Spring数据CrudRepository处理DB上的CRUD操作.
@Repository
public interface IUserRepository extends CrudRepository<User,String> {

}

用户是我的数据库用户表的实体. CrudRepository将以下操作添加到存储库:

> delete(String ID)
> findOne(String ID)
>保存(用户用户)

documentation所述,删除和查找操作会抛出IllegalArgumentException,以防给定的id为null,而保存操作不会引发任何异常.

问题是,CrudRepository的javadoc没有提到这些操作抛出的其他异常.例如,如果在DB中不存在提供的ID,则不会指出delete(String ID)操作将抛出一个EmptyResultDataAccessException异常.

在保存(用户)操作的javadoc中,不清楚在插入一个破坏一个数据完整性约束的新用户(在唯一字段和外键上)时会抛出哪些异常.此外,它不会警告您是否正在编写新的或存在的用户:它只是创建一个新的用户或覆盖(如果存在)(因此它是一个插入更新操作).

在企业应用程序中,我应该能够捕获一个操作可以抛出的每个可抛出的异常,我应该在操作的javadoc中读取它.

您是否知道有关CrudRepository异常的明确文档?

谢谢

解决方法

Spring具有内置的异常转换机制,因此JPA持久性提供程序抛出的所有异常都转换为Spring的 DataAccessException – 对于所有使用@Repository(或配置)注释的bean.

有四个主要组 –

> NonTransientDataAccessException – 除非修正异常的原因,否则相同操作的重试将会失败.因此,如果您传递非现有的ID,例如,除非数据库中存在该id,否则它将失败.
> RecoverableDataAccessException – 这些是前一个的“相反” – 可恢复的异常 – 在一些恢复步骤之后. api文档中的更多详细信息
> ScriptExceptionsql相关异常,当尝试处理不是格式良好的脚本时.
> TransientDataAccessException – 这些是在没有任何明确步骤的情况下可以恢复的例外.当数据库有超时时,您将在几秒钟后重试.

也就是说,找到关于所有异常的文档的理想场所在于API本身 – 只需要遍历DataAccessException的层次结构.

原文地址:https://www.jb51.cc/java/125395.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐