Допустим, у нас есть много-ко-многим:JPA подзапрос, возвращающий список в конструктор
entity ChannelDO {
Long id;
String name;
Set<LanguageDO> languages;
}
entity LanguageDO {
Long id;
String name;
}
Тогда есть простой класс, используемый в REST связи между клиентом и сервером (по некоторым причинам я никогда не позволял моя сущность объекты идут внешние методы EJB):
public class ChannelListItem {
public Long id;
public String name;
public List<String> languages;
public ChannelListItem();
public ChannelListItem(Long id, String name, List<String> languages);
}
объектов этого класса оказывается в табличные зрения на стороне клиента.
Я мог бы просто выбрать список объектов сущности и составить окончательный список ChannelListItems самостоятельно, но, возможно, есть удобный способ сделать JPA (Hibernate) сделать это.
Я пытаюсь с запросом, как это, но без успеха:
select new pkg.ChannelListItem(c.id, c.name,
(select cl.name from c.languages cl order by cl.name asc))
from ChannelDO c
order by c.name asc
кажется, что мой подзапрос только в состоянии вернуть одно значение. JPA говорит мне, что он ожидает конструктора с последним параметром типа String вместо List.