2017-10-07 76 views
2

我有以下的自定义查询:更新查询和返回单列

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

因此该方法返回我更改的行数。

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

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

回答

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);