我是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值。
答案 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
,您可以捕捉到它出了什么问题。