Как выбрать, в спящем режиме результат запроса как ассоциативный массив списка или hashmap

Я бы сказал, что это плохая практика. Если получено null, как я узнаю, что нет object или произошла какая-то ошибка?

14
задан GreenTurtle 10 March 2015 в 14:39
поделиться

2 ответа

Вы должны использовать синтаксис «новой карты» (пункт 14.6 справки по Hibernate)

select new map(count(i.inspectionId) as tot_inspections, t.year as year, t.quarter as quarter) from ...

Остальная часть запроса такая же. Это вернет список карт, где ключом является псевдоним «столбца».

32
ответ дан 1 December 2019 в 08:17
поделиться

Другое решение - определить объект данных только для отображения этих результатов и позволить Hibernate создавать их экземпляры на лету. Этому классу просто потребуется соответствующий конструктор.

Пример класса (геттеры и поля опущены)

public class InspectionCount() {
    // fields
    public InspectionCount(int count, int year, int quarter) {
        // initialize instance
    }
    // getters
}

Запрос будет выглядеть

select new InspectionCount(count(i.inspectionId), t.year, t.quarter)
        from Inspection as i
        inner join i.inspectionMission as im inner join im.timeline as t
        group by t.year,t.quarter

В результате вы получите Список из InspectionCount s.

1
ответ дан 1 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: