#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
.