基于线程:Spring Data JPA - Custom Query with multiple aggregate functions in result
我的jpa存储库中有此查询
if dict1["NSN"]==dict2["NSN"]:
print("Equal")
在我的pojo构造函数中是:
@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);
}
但是我有这个错误:
创建名称为“ averagesRepository”的bean时出错:调用init 方法失败;嵌套的异常是java.lang.IllegalArgumentException: 验证方法公共摘要查询失败 mx.com.sk.pojos.AverajesPojo mx.com.sk.admin.repositories.AveragesRepository.getLastSurveyAverages(java.lang.String,java.lang.Long)!
我怎么了?
答案 0 :(得分:0)
请在DTO结构中使用double而不是float,如果要从DTO返回float,则可以在其结构中进行管理。
AVG函数将状态字段路径表达式作为参数 并计算该组中Sate字段的平均值。的 状态字段必须为数字,并且结果以Double形式返回。
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;
}
}
也请使用a.groupName
和a.idRemote
,返回类型应与构造相同,因为它们将返回相同的类型值,但它们将取决于您的查询参数。所以让他们喜欢你的结构。 entitySettlement
和finalEFSL
:
@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);
}