Пожалуйста, используйте double вместо float в вашей структуре DTO, если вы хотите вернуть float из DTO, вы можете управлять им в вашей структуре.
Функция 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
, и тип возвращаемого значения должен быть таким же, как constrcuture, поскольку они имеют одинаковыезначения типа будут возвращены, но они будут соответствовать параметрам вашего запроса.так что им нравится ваша конструкция.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);
}