Custom запрос JPA
Хочу получить самую позднюю и самую раннюю даты из таблицы в одном запросе.
Какой тип данных должен быть в случае такого запроса?
@Query ("SELECT min(r.dateRecording), max(r.dateRecording) FROM Record r")
LocalDate[] getMinMaxRecord();
Если я делаю так (или List, вместо массива) в массив попадает только первое поле min(r.dateRecording).
PS:
Задачу можно решить двумя запросами, с запросом min в одном и max в другом. Но что если мне когда-нибудь нужно будет получить лишь несколько полей из базы?
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Вам необходимо использовать List<Object[]>:
@Query ("SELECT min(r.dateRecording), max(r.dateRecording) FROM Record r")
List<Object[]> getMinMaxRecord();
Либо создать проекцию:
package com.somepackage;
import java.time.LocalDate;
public class MinMaxDTO {
private LocalDate min;
private LocalDate max;
public MinMaxDTO(LocalDate min, LocalDate max) {
this.min = min;
this.max = max;
}
}
И изменить код следующим образом:
@Query ("SELECT new com.somepackage.MinMaxDTO(min(r.dateRecording), max(r.dateRecording)) FROM Record r")
List<MinMaxDTO> getMinMaxRecord();