Согласно this у вас есть следующие опции:
- Обтекание значений в типобезопасном Java объекте, который будет возвращен в качестве результата запроса.
select new package1.CustomObject(item, dimension, material, product)
from MainTable ...
Класс проекции должен быть полностью квалифицирован в запросе сущности и должен определять соответствующий конструктор. Класс здесь не нужно отображать. Это может быть класс DTO. Если он действительно представляет сущность, полученные экземпляры возвращаются в состоянии NEW (не управляется!).
HQL поддерживает дополнительные функции «dynamici c instantiation».
В запросе можно указать возвращение
List
вместо
Object[]
для скалярных результатов.
select new list(item, dimension, material, product)
from MainTable ...
Результатами этого запроса будут List<List>
как в отличие от List<Object[]>
.
Обтекание скалярных результатов в
Map
select new map(
item as iName,
dimension as iDimension,
material as iMaterial,
product as iProduct)
from MainTable ...
Результатом этого запроса будет List<Map<String, Object>>
, а не List<Object[]>
. Ключи карты определяются псевдонимами, заданными в выражениях выбора. Если пользователь не назначает псевдонимы, ключом будет индекс каждого конкретного столбца набора результатов (например, 0, 1, 2 и т. Д. c).