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();
→ Ссылка