JPQL:在构造函数表达式中接收集合
2022-09-02 13:10:35
我正在使用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)。
您是否有任何解决方案,或者根本无法在构造函数表达式中使用集合?
哦,还有一件事:如果我很容易地创建两个构造函数(...,集合子项和...,子项),我没有得到任何结果,但也没有错误......在我眼里不是很满意:-/