如何使用spring api使用JPA查询进行软删除?

时间:2017-06-16 12:35:17

标签: java mysql hibernate jpa spring-boot

您好我是Java spring boot的初学者。我试图使用以下方法修改特定记录:

adminRepo.updateAllActive(id);    // method Call

存储库:

@Query(value= "update admin a set a.active = 0 where a.id = :id " ,nativeQuery=true)
AdminEntity updateAllActive(@Param("id") Integer id);

但我收到错误“无法提取结果集”

任何人都可以为此指导我。我能够从database.Issue读取条目只在我尝试任何修改查询时发生。

提前致谢。

3 个答案:

答案 0 :(得分:2)

更新查询返回一个整数值,表示受影响的条目数,并且可以覆盖以返回void,因此如果您不关心计数,则应将方法返回类型声明为void:

@Modifying
@Query(value= "update admin a set a.active = 0 where a.id = :id" ,nativeQuery=true)
void updateAllActive(@Param("id") Integer id);

此外,您需要将查询标记为@Modifying,有关更新查询的详细信息,请参阅documentation

答案 1 :(得分:1)

添加@Modifying注释,并声明您的方法返回int

请参阅:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.modifying-queries

答案 2 :(得分:0)

示例

  @Modifying
    @Query("Update Users u SET u.userKey=:userKey, u.phoneNumberVerified=true, u.name=:name, u.surname=:surname, u.phoneNumberVerified=true WHERE u.phoneCode=:phoneCode AND u.phoneNumber=:phoneNumber ")
    void updateUsers(@Param("userKey") String userKey, @Param("phoneCode") String phoneCode,
            @Param("phoneNumber") String phoneNumber, @Param("name") String name, @Param("surname") String surname);

让我知道它是否正确