更新查询并返回单个列

时间:2017-10-07 14:03:39

标签: java spring spring-data-jpa jpql

我有以下自定义查询:

    @Transactional
    @Modifying
    @Query(value = "UPDATE ARTICLE set likes = likes + 1 WHERE article_id = ?1", nativeQuery = true)
    int likeArticleById(UUID uuid);

因此,此方法返回已更改行的数量。

是否有可能将更新后的值作为返回值?

在这个例子中,我正在更新喜欢的数量,并想要更新喜欢的更新数量。

1 个答案:

答案 0 :(得分:2)

你可以做的是用另一个@Transactional方法包装更新并检索喜欢的操作。代码应如下所示:

此方法应位于@Service类:

@Transactional
int likeArticleAndRetriveNewLikes(UUID uuid) {
    repository.likeArticleById(uuid);
    return repository.getArticleLikesById(uuid);
}

这些是@Repository

中公开的方法
@Modifying
@Query(value = "UPDATE ARTICLE set likes = likes + 1 WHERE article_id = ?1", nativeQuery = true)
int likeArticleById(UUID uuid);

@Query(value = "SELECT likes FROM ARTICLE WHERE article_id = ?1", nativeQuery = true)
int getArticleLikesById(UUID uuid);