Domanda

ho una piuttosto grande modello Richiedente:

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

Per compilare un elenco di selezione, ho bisogno di un elenco di (id, nome) tuple e io uso questa query di ricerca:

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

}

Tuttavia, ho un elenco di Object [] 's e non ho molta voglia di convertire questi nel livello business per i corrispondenti tipi (Long e String). Qual è il modo migliore per affrontare questo? Dovrei scorrere la lista e fare manualmente la conversione di tipo prima di restituirlo? O devo fare una classe di supporto:

public class ApplicantTuple{
 public Long id
 public String name;

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

}

e quindi avere una query di ricerca:

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

O c'è un modo migliore per scrivere query di ricerca?

È stato utile?

Soluzione

Dal momento che a quanto pare si sta utilizzando JPA2, utilizzare i metodi type-safe:

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

Poi basta utilizzare gli oggetti:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top