我有以下自定义查询:
@Transactional
@Modifying
@Query(value = "UPDATE ARTICLE set likes = likes + 1 WHERE article_id = ?1", nativeQuery = true)
int likeArticleById(UUID uuid);
所以这个方法返回我更改的行数。
是否有可能获取更新后的值作为返回值?
在此示例中,我正在更新点赞数并希望返回更新后的点赞数。
最佳答案
您可以做的是将更新和检索喜欢操作包装在另一个@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);
关于java - 更新查询并返回单列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621062/