【问题标题】:Does Spring JPA throw an error if save function is unsuccessful?如果保存功能不成功,Spring JPA 会抛出错误吗?
【发布时间】:2014-08-12 13:59:33
【问题描述】:

我想知道在尝试将对象保存到数据库时,Spring JPA 是否会抛出什么类型的错误。 JpaRepository.java 说看org.springframework.data.repository.CrudRepository#save。但是,如果有的话,我似乎找不到抛出什么类型的错误。如果没有报错,如何检查保存是否成功?

任何见解将不胜感激。

【问题讨论】:

  • 抛出的异常很可能取决于原因。例如,可能有 OptimisticLockExpections、SQLExceptions。至少出现问题时会有例外。

标签: java spring spring-data-jpa


【解决方案1】:

Spring Data Repositories 抛出 Spring 的 DataAccessExceptions,其结构允许您根据某些错误场景捕获异常。例如。抛出 DataIntegrityViolationException 以指示外键违规。

原始异常包含在抛出的异常中,以便您可以在需要时访问它。通过抛出与持久性技术无关的异常,存储库客户端不会受到技术特定异常(例如 Hibernate 异常、JPA 异常、MongoDB 异常)的污染,因此您可以在不中断客户端的情况下交换存储库实现。

【讨论】:

    【解决方案2】:

    CrudRepostiroy.save 有返回类型the saved entity

    <S extends T> S save(S entity)
    Saves a given entity. Use the returned instance for further operations as the save operation might have changed the entity instance completely.
    Parameters:
    entity -
    Returns:
    the saved entity
    

    【讨论】:

      【解决方案3】:

      它应该抛出一个org.springframework.orm.jpa.JpaSystemException。此外,CrudRepostiroy.save 会为您返回您提供的实体的一个新实例,如果您返回一个,则说明它已保存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-03
        • 1970-01-01
        • 2018-06-01
        • 2021-01-12
        • 2012-02-04
        • 1970-01-01
        相关资源
        最近更新 更多