我试图在一次查询中返回一组评级的平均值和计数。我按照我在浏览时找到的示例,在两个查询中相对轻松地完成了它。例如:
@Query("SELECT AVG(rating) from UserVideoRating where videoId=:videoId")
public double findAverageByVideoId(@Param("videoId") long videoId);
但是当我想在同一个查询中获得平均值和计数时,问题就开始了。经过多个小时的尝试,我找到了这个可行的方法,现在在这里分享给大家。希望能对你有所帮助。
1)我需要为结果创建一个新的类:
然后我需要在查询中引用那个类:
@Query("SELECT new org.magnum.mobilecloud.video.model.AggregateResults(AVG(rating) as rating, COUNT(rating) as TotalRatings) from UserVideoRating where videoId=:videoId")
public AggregateResults findAvgRatingByVideoId(@Param("videoId") long videoId);
现在一个查询可以返回平均评级和评级数量。