Estoy usando JPQL y quiero recibir algunos parámetros normales y una colección en una Expresión de Constructor para crear directamente los objetos DTO. Pero si la colección está vacía, siempre me sale un error, porque él no encuentra el constructor derecha:JPQL: Recibir una Colección en una Expresión de Constructor
El DTO-Clase mira el siguiente:
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;
}
}
El niño de clase:
public class Child {
private String name;
private int age;
}
Y ahora la expresión Constructor se ve lo siguiente:
return (List<DTO>) getEm().createQuery("SELECT DISTINCT NEW de.DTO(p.id, p.name, p.childs)
FROM Parent p").getResultList();
el problema actual es, t En caso de que la Colección p.childs esté vacía, dice que no encuentra el constructor correcto, necesita (largo, String, Child) en lugar de (long, String, Collection).
¿Tiene algún tipo de solución o simplemente no es posible utilizar una Colección en Expresión del constructor?
Ah y una cosa más: si creo fácilmente dos constructores (..., Colección childs AND ..., Child childs) No obtengo ningún resultado, pero tampoco error ... a mis ojos no me satisface realmente: -/
Creo que olvidó publicar su clase 'Parent'. También la forma plural de 'niño' es' niños'. – Behrang
intenté agregar la condición para consultar - "DONDE p.childs NO ESTÁ VACÍA Y TAMAÑO (p.childs) <> 0" –