Frage

Ich habe ein ziemlich großes Modell Anmelder:

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

Um eine Auswahlliste zu füllen, ich brauche eine Liste von (id, name) Tupeln und ich verwende diese Suchkriterien:

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

}

Allerdings erhalte ich eine Liste von Object [] 's und ich will nicht wirklich dieses in der Business-Schicht zu den entsprechenden Typen (Long und String) konvertieren. Was ist der beste Weg, dies zu nähern? Sollte ich durch die Liste durchlaufen und manuell die Typumwandlung tun, bevor er zurückkehrt? Oder sollte ich eine Hilfsklasse:

public class ApplicantTuple{
 public Long id
 public String name;

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

}

und dann eine Suchabfrage haben:

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

Oder gibt es eine bessere Möglichkeit, Suchanfragen zu geben?

War es hilfreich?

Lösung

Da Sie offenbar JPA2 verwenden, verwenden Sie die typsichere Methoden:

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

Dann nur die Objekte verwenden:

for(Applicant app: getApplicants()){
    selectionList.populate(app.getName(), app.getId());
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top