Spring Data JPA错误处理的最佳实践是什么

时间:2019-05-16 12:29:43

标签: java spring jpa exception

我是spring和Spring Data领域的新手。

我已经建立了一个用户和权限管理系统,其中一个用户可以授予和删除另一个用户的权限。

我已经深入研究docs,但是我不知道如何处理只想在表中插入或处理数据的查询。

在docs查询返回类型表中,我找不到状态或状态报告对象之类的东西。

我正在寻找的一种模式可以使我控制一次操作是否成功。现在我正在使用基元。当一切顺利时,我得到“ 1”,但是当我查询一个空表时,我得到“ 0”。所以我需要更多细节。

感谢您的指导并分享您的经验。

编辑: 这是一个代码示例:

@Transactional
@Modifying
@Query(value = "DELETE FROM permissions WHERE producerId=:producerId AND comsumerId=:consumerId", nativeQuery = true)
void clearAllPermissions(@Param("producerId") Long producerId,@Param("consumerId") Long consumerId);

该方法由我的存储库类提供。

    @Repository
    public interface PermissionsRepository extends JpaRepository<ProducerConsumerPermissions, Integer>{
.
.
.
}

我从我的控制器层使用的服务层中调用该类。 我想知道此操作是否成功是很高兴的,这样我就可以将整个层的肽段运输到前端,并向用户发送消息。但是,当表为空时,使用Integer作为返回类型时,我会得到false值。

1 个答案:

答案 0 :(得分:1)

使方法返回int,然后知道是否删除了任何记录。

@Transactional
@Modifying
@Query(value = "DELETE FROM permissions WHERE producerId=:producerId AND comsumerId=:consumerId", nativeQuery = true)
int clearAllPermissions(@Param("producerId") Long producerId,@Param("consumerId") Long consumerId);

如果有问题,无论如何都会抛出异常。 Spring Data抛出DataAccessException,您可以捕捉到它出了什么问题。