JPA Typed consultas de búsqueda
-
26-09-2019 - |
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?
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());
}