Пользовательский запрос Spring Data JPA count не показывает все записи

#spring-boot #spring-data-jpa

#spring-boot #spring-data-jpa

Вопрос:

Запрос возвращает не все записи, т.Е. Возвращаются все записи, количество которых одинаково только из них. Где, как тот же код MYSQL workbench, работает как шарм

Пользовательский запрос JPA

 public interface BookingRepository extends JpaRepository<Booking, Long> {

    @Query("select count(v.source), concat(v.source,'-', v.destination) as bus_route from Booking v group by v.source, v.destination")
    public List<Object[]> groupByBus();
}
  

Вывод

Запрос в MYSQL

 SELECT count(source), concat(source," - ", destination) as bus_route
FROM booking
GROUP BY source, destination;
  

введите описание изображения здесь

Как вы можете видеть, есть две записи с числом, равным единице, но только одна возвращается Spring data jpa

Комментарии:

1. Просто измените возвращаемый тип с List<Object[]> на List<Map<String, Object>>

Ответ №1:

Ваш запрос возвращает a List<Object[]> , но массив объектов может быть почти всем.

На самом деле, Object[] содержит для каждой позиции другую Object[] с двумя значениями: count и bus_route .

Вы можете перебирать каждое значение таким образом (я тестировал, и мне нужно BigInteger было привести значение объекта):

 Map<BigInteger,String> map = new HashMap<BigInteger,String>();
for(Object object[] : objectList) map.put((BigInteger)object[0], (String)object[1]);
  

И вы получите нужную карту.

Кроме того, если могут быть повторяющиеся значения, создайте новый список вместо Map .