Как получить сумму записей в ключе, значение моды, используя nativeQuery в CrudRepository?

Я получаю массив-список в качестве типа возврата с 0-й индекс в качестве массива. Что я хочу, так это разделение пары ключ-значение, где имя столбца - это ключ, а его значение - соответствующая сумма, которую я получил.

@Query(value = "
SELECT SUM(revenue_amount) AS revenue_amount
     , SUM(service_charge_amount) AS service_charge_amount 
  FROM event_stats 
 WHERE event_id = :event_id
", nativeQuery = true)
public ? findTicketTotalForAnEvent(@Param("event_id") String event_id);

Какой должен быть тип возврата? И как его отфильтровать дальше?

1 ответ

Если вы открыты для использования проекций, то, что показано ниже, даст желаемый результат.

Объявите статический интерфейс, как показано ниже:

static interface TotalTicketsForEvent { 
    public Long getRevenueAmount();
    public Long getServiceChargeAmount();
}

Теперь ваш запрос должен быть:

@Query(value="SELECT SUM(revenue_amount) AS revenueAmount, SUM(service_charge_amount) AS serviceChargeAmount FROM event_stats WHERE event_id = :event_id", nativeQuery = true)
public List<TotalTicketsForEvent> findTicketTotalForAnEvent(@Param("event_id") String event_id);

Вы можете использовать методы интерфейса для дальнейшей обработки списка.

Другие вопросы по тегам