Я использую JPQL и хочу получать некоторые обычные параметры и коллекцию в выражении конструктора, чтобы напрямую создавать объекты DTO. Но если коллекция пуста, я всегда получаю ошибку, потому что он не находит правильный конструктор:
Класс DTO выглядит следующим образом:
public class DTO {
private long id;
private String name;
private Collection<Child> children;
public DTO (long id, String name, Collection<Child> children){
this.id = id;
this.name = name;
this.children= children;
}
}
Детский класс:
public class Child {
private String name;
private int age;
}
И теперь выражение конструктора выглядит следующим образом:
return (List<DTO>) getEm().createQuery("SELECT DISTINCT NEW de.DTO(p.id, p.name, p.childs)
FROM Parent p").getResultList();
Текущая проблема заключается в том, что если коллекция p.childs пуста, в ней говорится, что она не находит правильный конструктор, ему нужно (long, String, Child) вместо (long, String, Collection).
Есть ли у вас какое-либо решение или просто невозможно использовать сборку в выражении конструктора?
О, и еще одна вещь: если я легко создаю два конструктора (..., Collection childs AND..., Child childs), я не получаю никаких результатов, но ошибки тоже... в моих глазах не очень приятно:/