JPA typisierten Suchanfragen
-
26-09-2019 - |
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?
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