Let's say we have a many-to-many relationship:
entity ChannelDO {
Long id;
String name;
Set<LanguageDO> languages;
}
entity LanguageDO {
Long id;
String name;
}
Then there is also a simple class used in REST communication between client and server (for some reasons I never let my entity objects go outside EJB methods):
public class ChannelListItem {
public Long id;
public String name;
public List<String> languages;
public ChannelListItem();
public ChannelListItem(Long id, String name, List<String> languages);
}
Objects of that class are rendered into table-like view on client side.
I could simply select a list of entity objects and build final list of ChannelListItems by myself but maybe there is a convenient way to make JPA (Hibernate) do this.
I am trying with query like this but with no success:
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
It seems that my sub-query is only able to return single value. JPA tells me that it expects constructor with last parameter of type String instead of List.