JPQL: Получение коллекции в выражении конструктора

Я ' m, используя 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).

У вас есть какое-либо решение или просто невозможно использовать коллекцию в выражении конструктора?

И еще одно: если я легко создам два конструктора (..., дочерние элементы коллекции И ..., Child childs) Я не получаю результатов, но и ошибок тоже ... на мой взгляд, не совсем удовлетворительно: - /

14
задан Florian 14 May 2011 в 13:12
поделиться