我有以下自定义查询:
@Transactional
@Modifying
@Query(value = "UPDATE ARTICLE set likes = likes + 1 WHERE article_id = ?1", nativeQuery = true)
int likeArticleById(UUID uuid);
因此,此方法返回已更改行的数量。
是否有可能将更新后的值作为返回值?
在这个例子中,我正在更新喜欢的数量,并想要更新喜欢的更新数量。
答案 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);