Pergunta

Eu tenho um grande candidato a modelo:

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

Para preencher uma lista de seleção, preciso de uma lista de tuplas (id) e uso esta consulta de pesquisa:

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

}

No entanto, recebo uma lista dos objetos [] e não quero convertê -los na camada de negócios para os tipos correspondentes (longa e string). Qual é a melhor maneira de abordar isso? Devo iterar através da lista e fazer a conversão de tipo antes de devolvê -la? Ou devo fazer uma classe auxiliar:

public class ApplicantTuple{
 public Long id
 public String name;

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

}

E então tenha uma consulta de pesquisa:

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

Ou existe uma maneira melhor de digitar consultas de pesquisa?

Foi útil?

Solução

Como você está aparentemente usando o JPA2, use os métodos seguros de tipo:

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

Em seguida, basta usar os objetos:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top