当前位置: 首页 > 知识库问答 >
问题:

如何使用jpa存储库获得多个平均值(spring boot)

孟哲
2023-03-14

基于线程:Spring Data JPA-结果中带有多个聚合函数的自定义查询

我的jpa存储库中有这个查询

@Query("SELECT new mx.com.sk.AveragesPojo(AVG(a.initial), AVG(a.initialEFSL), AVG(a.finalEFSL), AVG(a.entitySettlement)) FROM AveragesModel AS a WHERE groupName = :groupName AND idRemote = :idRemote")
    public AverajesPojo getLastSurveyAverages(@Param("groupName") String groupName, @Param("idRemote") Long idRemote);
}

并且在我的pojo构造函数中是:

public AverajesPojo(Float initial, Float initialEFSL, Float entitySettlement, Float finalEFSL) {
    super();
    this.initial = initial;
    this.initialEFSL = initialEFSL;
    this.entitySettlement = entitySettlement;
    this.finalEFSL = finalEFSL;
}

但我有这个错误:

创建名为“Averages Repository”的bean时出错:调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:对方法public abstract mx.com.sk.pojos.averajespojo mx.com.sk.admin.repositories.averagesrepository.getLastSurveyaVerages(java.lang.string,java.lang.long)的查询验证失败!

我错在哪里?

共有1个答案

狄英哲
2023-03-14

请在DTO结构中使用double而不是float,如果您想从DTO返回float,那么您可以在结构中管理它。

AVG函数将状态字段路径表达式作为参数,并计算组上状态字段的平均值。状态字段必须是数值,并且结果以双倍形式返回。

public class AveragesPojo {
    private double initial;
    private double initialEFSL;
    private double entitySettlement;
    private double finalEFSL;

    public AveragesPojo(double initial, double initialEFSL, double entitySettlement, double finalEFSL) {
        super();
        this.initial = initial;
        this.initialEFSL = initialEFSL;
        this.entitySettlement = entitySettlement;
        this.finalEFSL = finalEFSL;
    }

}

还请使用.groupname&.idremote,并且返回类型应与constrcuture相同,因为它们具有相同的类型值将返回,但它们将根据您的查询参数。所以让他们像你的结构一样。EntitySettlementFinalefsl:

@Query("SELECT new mx.com.sk.AveragesPojo(AVG(a.initial), AVG(a.initialEFSL), AVG(a.entitySettlement), AVG(a.finalEFSL )) FROM AveragesModel AS a WHERE a.groupName = :groupName AND a.idRemote = :idRemote")
public AverajesPojo getLastSurveyAverages(@Param("groupName") String groupName, @Param("idRemote") Long idRemote);
}
 类似资料:
  • 问题内容: 我的表中有一列具有FLOAT类型的值。如何获得此列中所有元素的平均值? 问题答案: 这将平均所有行。要平均子集,请使用子句。要平均每个组(某物),请使用by子句。

  • 我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是:

  • 我正在拼命寻找解决熊猫问题的办法。也许你能帮我。 我正在寻找一个滚动平均值,考虑到之前的平均值。 df看起来像这样: 现在,使用函数我会得到如下结果: 我想从第一个计算中考虑平均值,如下所示: 哪里 提前谢谢你!

  • 问题内容: 我正在尝试学习SQL,所以请耐心等待。我正在使用PostgreSQL 9.3 我想根据日期窗口对一列进行平均。我能够编写窗口函数来完成一个集合,但是我希望能够随着不断增长做到这一点。我的意思是: 我假设有一个比对我要平均的每个范围运行查询更好的方法。任何建议表示赞赏。谢谢你。 编辑 我正在尝试创建均匀分布的垃圾箱,以用于汇总表的值。 我的间隔是: 这里是一个表的列 并且 是并列我想表分

  • 问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:

  • 我试图执行带有子网的select语句,在存储库中使用带有'native query=true'的@query注释。但它给了我以下错误: psqlexception:error:“select”或“select”附近的语法错误 sub SELECT查询单独给出如下所示执行时的预期结果 上述查询的结果集是;RatingsAndReviews对象数组 所以我想要得到的是客户对特定“否”的评分。星星的。比