Pregunta

Tengo un modelo bastante grande Solicitante:

public class Applicant{
 private Long id
 private String name;
 ...
 ...
}

Para rellenar una lista de selección, necesito una lista de (id, nombre) tuplas y utilizo esta consulta de búsqueda:

public List getNames() {
    Query query = em.createQuery("select a.id, a.name from Applicant a");
    return query.getResultList();

}

Sin embargo, tengo una lista de Object [] 's y yo realmente no quiero convertir esto en la capa de negocio a los tipos correspondientes (Long y String). ¿Cuál es la mejor manera de abordar esto? Debería recorrer la lista y hacer manualmente el tipo de conversión antes de devolverlo? O debería tomar una clase de ayuda:

public class ApplicantTuple{
 public Long id
 public String name;

 public Application(Long id, String name) {
    ...
 }

}

y luego tener una consulta de búsqueda:

Query query = em.createQuery("select NEW my.model.ApplicantTuple(a.id, a.name) from Applicant a");

O hay una mejor manera de escribir consultas de búsqueda?

¿Fue útil?

Solución

Puesto que usted está usando JPA2 parecer, utilizar los métodos de tipo de fallos:

public List<Applicant> getApplicants() {
    TypedQuery<Applicant> query = em.createQuery(
        "select a.id, a.name from Applicant a",
        Applicant.class
    );
    return query.getResultList();
}

A continuación, sólo tiene que utilizar los objetos:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top