Я бы сказал, что это плохая практика. Если получено null
, как я узнаю, что нет object
или произошла какая-то ошибка?
Вы должны использовать синтаксис «новой карты» (пункт 14.6 справки по Hibernate)
select new map(count(i.inspectionId) as tot_inspections, t.year as year, t.quarter as quarter) from ...
Остальная часть запроса такая же. Это вернет список карт, где ключом является псевдоним «столбца».
Другое решение - определить объект данных только для отображения этих результатов и позволить 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.