Этот запрос прекрасно работает в программном обеспечении MySQL Workbench:
select avg(total) as moyenne from (select s.id_station, (s.s1_e1 + s.s1_e2 + s.s1_g0 + s.s1_g1 + s.s1_g2 + s.s1_g3+ s.s1_g4 + s.s1_g5 + s.s1_g6 + s.s1_g7
+ s.s1_g8 + s.s1_g9 + s.s3_g0 + s.s3_g1 + s.s3_g2 + s.s3_g4 + s.s3_g5 + s.s3_g7 + s.s3_g8 + s.s3_g9) as total from statistique s
where s.id_station=60351 and DATE(s.date) between '2019_06_01' and '2019_06_01')as moy;
Возвращает число.Поэтому я попытался реализовать его в репозитории JPA для моего приложения springboot:
@Query(value="select avg(total) as moyenne from (select s.id_station, (s.s1_e1 + s.s1_e2 + s.s1_g0 + s.s1_g1 + s.s1_g2 + s.s1_g3+ s.s1_g4 + s.s1_g5 + s.s1_g6 + s.s1_g7" +
" + s.s1_g8 + s.s1_g9 + s.s3_g0 + s.s3_g1 + s.s3_g2 + s.s3_g4 + s.s3_g5 + s.s3_g7 + s.s3_g8 + s.s3_g9) as total from statistique s " +
" where s.id_station= :stationId and DATE(s.date) between :date1 and :date2)as moy;",
nativeQuery= true)
public Long avgErreurByStationId(Long stationId, @Param("date1") Date date1, @Param("date2") Date date2);
Но метод jpa, приведенный выше, возвращает NULL всякий раз, когда я передаю одну и ту же дату в запрос (например, 2019-06-01 два раза)
Так что он работает на mysql, но возвращает ноль в JPA Native Query.
Я также пробовал второй SQL-запрос с JPA nativeQuery, но на этот раз они оба работают как положено: SQL:
@Query(value="select avg(total) as moyenne from (select st.id_station, sum(s.s1_e1 + s.s1_e2 + s.s1_g0 + s.s1_g1"
+ " + s.s1_g2 + s.s1_g3+ s.s1_g4 + s.s1_g5 + s.s1_g6 + s.s1_g7 + s.s1_g8 + s.s1_g9 + s.s3_g0 + s.s3_g1 "
+ "+ s.s3_g2 + s.s3_g4 + s.s3_g5 + s.s3_g7 + s.s3_g8 + s.s3_g9) as total "
+ "from station st, statistique s where "
+ "st.id_station=s.id_station and DATE(s.date) between :date1 and :date2 group by st.id_station)as moy;",
nativeQuery= true)
public Long avgErreurAllStations(@Param("date1") Date date1, @Param("date2") Date date2);
Для метода jpa, описанного выше, работают как SQL (инструментальные средства mysql), так и jpa.
Итак, проблема в первом запросе, который возвращает ноль, если я даю ему ту же датуили дата, которая не содержит никакой записи, НО в mysql она возвращает результат в той же ситуации (иначе: та же дата и даты без записей).Так почему же мое приложение Springboot возвращает нулевые значения?