У меня есть DTO, которое выглядит примерно так:
class WidgetProjection {
String id;
String description;
List<AttributeProjection> attributes;
}
class AttributeProjection {
String id;
}
В моей модели сущности есть уровень косвенности, когда список AttributeProjection по существу имеет несколько версий, и я хочу получить последнюю версию. Таким образом, я хочу, чтобы мой запрос выглядел так:
SELECT new WidgetProjection(widget.id, widget.description, new ArrayList<>(attributes - how can I project these here?))
FROM WidgetAttribute attributes
JOIN attributes.widgetVersion widgetVer
JOIN FETCH widgetVer.widget widget
WHERE widget.id = :id
HAVING widgetVer.version = MAX(widgetVer.version)
Я не знаю, возможно ли написать запрос, который я хочу, таким образом, в JPQL или мне просто лучше выполнить два запросы и вручную построить DTO. Могу ли я сделать это за одну операцию?