Как я могу получить проекцию в JPQL, где проекция содержит коллекцию? - PullRequest
0 голосов
/ 28 января 2020

У меня есть 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. Могу ли я сделать это за одну операцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...