You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何获取MySQL里同一产品的最新平均评分数据?

解决方案

首先,findTopByProduct默认按实体主键升序查询,所以会拿到最早创建的旧数据(4.00);而findBottomByProduct并非Spring Data JPA的内置查询方法,自然无法使用。要获取最新的average_stars,可以参考以下几种方案:

  • 自定义带排序的查询方法
    在你的Repository接口中添加指定排序规则的查询方法,优先按记录的创建/更新时间降序(如果实体有这类字段),或者按自增ID降序(适用于ID递增生成的场景),示例代码如下:

    // 按创建时间降序取最新一条(推荐,时间字段能精准反映记录新旧)
    Score findTopByProductOrderByCreatedAtDesc(Product product);
    
    // 无时间字段时,按ID降序获取(依赖ID自增规则)
    Score findTopByProductOrderByIdDesc(Product product);
    

    调用该方法即可直接拿到最新的评分记录,从中提取4.50的average_stars。

  • 用@Query自定义JPQL查询
    如果需要更灵活的逻辑,可直接编写JPQL语句手动指定排序和条数限制:

    @Query("SELECT s FROM Score s WHERE s.product = :product ORDER BY s.createdAt DESC LIMIT 1")
    Score getLatestScoreByProduct(@Param("product") Product product);
    
  • 额外注意
    建议给实体类添加createdAt或updatedAt字段来标识记录时序,这是数据管理的通用做法;若无法添加时间字段,再考虑用ID排序,但这种方式依赖ID生成规则,可靠性略低。

内容的提问来源于stack exchange,提问作者Ben Chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:25:32