Question

J'ai un demandeur modèle assez grand:

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

Pour remplir une liste de sélection, je besoin d'une liste de (id, nom) tuples et j'utiliser cette requête de recherche:

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

}

Cependant, j'obtenir une liste des objets [] s et je ne veux pas vraiment de les convertir dans la couche d'affaires aux types (Long et String) correspondant. Quelle est la meilleure façon d'aborder ce sujet? Dois-je parcourir la liste et faire manuellement la conversion de type avant de le renvoyer? Ou devrais-je faire une classe d'aide:

public class ApplicantTuple{
 public Long id
 public String name;

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

}

et ont une requête de recherche:

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

Ou est-il une meilleure façon de saisir des requêtes de recherche?

Était-ce utile?

La solution

Puisque vous utilisez apparemment JPA2, utilisez les méthodes typées:

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

Ensuite, il suffit d'utiliser les objets:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top