如果保存功能不成功,Spring JPA会抛出错误吗?

时间:2014-08-12 13:59:34

标签: java spring spring-data-jpa

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

非常感谢任何见解。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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