我正在使用Spring Data JPA框架中的JpaRepository。我在下面有一段代码:
@Repository
public interface PresetFolderRepository extends JpaRepository<PresetFolder, Integer>{
@Modifying
@Transactional
@Query("update PresetFolder pf set pf.parentId = :parentId where pf.id = :id")
int updateParentId(@Param("id") int id, @Param("parentId") int parentId);
}
当我调用此方法时:
@Autowired PresetFolderRepository repo;
repo.updateParentId(1,2);
public void test(){
我是否必须用try-catch包围它?如何知道自定义方法'updateParentId'是否具有try-catch实现?
谢谢!
编辑: 我担心的是,如果我的数据库发生故障,此方法是否会捕获异常。
答案 0 :(得分:1)
如果出现问题,存储库将始终告诉您(即它们永远不会吞下异常)。如果是这种情况,您将始终获得运行时异常。
除了在调用堆栈的最顶层,您可能也不应该捕获这样的异常,在那里您可以向最终用户显示错误消息。
答案 1 :(得分:0)
不,你不需要它通过try-catch块包围。大多数Spring-Data存储库都会抛出运行时异常。关于您的问题,如果数据库关闭,则会生成运行时异常,您可以在控制器级别捕获它(如果您正在编写Web应用程序)。
如果在数据库关闭时执行测试用例,测试用例会为无法访问的主机抛出错误。