JPA query.getResultList()?
Verwende ich JPA 1.0:
Query query;
query = em.createNamedQuery("getThresholdParameters");
query.setParameter(1, Integer.parseInt(circleId));
List<Object[]> resultList = new ArrayList();
resultList = query.getResultList();
Hier bekomme ich als Ergebnis List<Object[]>
, damit ich den Typ konvertieren, werden alle Parameter der Reihe zu Ihren jeweiligen Typen, was umständlich ist.
In JPA 2.0 gibt es TypedQuery die Rückkehr ein entity-Objekt des Typs eins gibt.
Aber da bin ich mit JPA 1 ich kann es nicht verwenden.
How to get Ergebnis als Entity-Objekt des Typs, die ich will??
EDIT:
ABFRAGE
@Entity
@Table(name="GMA_THRESHOLD_PARAMETERS")
@NamedQuery(
name = "getThresholdParameters",
query = "select gmaTh.minNumberOc, gmaTh.minDurationOc, gmaTh.maxNumberIc, gmaTh.maxDurationIc, gmaTh.maxNumberCellId,"
+ "gmaTh.distinctBnumberRatio, gmaTh.minPercentDistinctBnumber from GmaThresholdParameter gmaTh "
+ "where gmaTh.id.circleId=?1 AND gmaTh.id.tspId=?2 AND gmaTh.id.flag=?3 "
)
Durch die Definition der richtigen JPQL. Post die benannte Abfrage, die den code verweist. Und PS: die Instanz von ArrayList, die Sie manuell erstellen, werden sofort überschrieben, wenn die Liste, die die Abfrage zurückgibt.
Gepostet hast die Abfrage
Sieht aus wie diese wurde vorher gefragt. stackoverflow.com/questions/6119683/..., Wenn es mir war, würde ich suchen, um ein upgrade auf JPA 2, könnte dies die perfekte Ausrede. Auch verschwenden Sie keine Zeit instanziieren resultList wenn Sie nur gehst, um diese zu überschreiben.
Ich habe nicht das überschreiben, was? Wo sonst soll ich erfassen die resultList?
(Ich geschrieben eine Antwort, um zu versuchen und zeigen Ihnen was wir meinen)
Gepostet hast die Abfrage
Sieht aus wie diese wurde vorher gefragt. stackoverflow.com/questions/6119683/..., Wenn es mir war, würde ich suchen, um ein upgrade auf JPA 2, könnte dies die perfekte Ausrede. Auch verschwenden Sie keine Zeit instanziieren resultList wenn Sie nur gehst, um diese zu überschreiben.
Ich habe nicht das überschreiben, was? Wo sonst soll ich erfassen die resultList?
(Ich geschrieben eine Antwort, um zu versuchen und zeigen Ihnen was wir meinen)
InformationsquelleAutor Siddharth Trikha | 2014-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Abfrage ausgewählt viele Felder. So eine Abfrage gibt immer eine Liste von Object-arrays. Wenn Sie möchten, eine Liste mit Instanzen der GmaThresholdParameter Person, dann sollte die Abfrage sein
Den code, um die Liste der Personen wäre dann
Erhalten Sie eine Art Sicherheit Warnung vom compiler, die Sie ignorieren können.
Dann werden Sie haben, um mit einem
List<Object[]>
. Beachten Sie, dass ohne einige Spalten bei der Auswahl von Zeilen aus einer Tabelle in der Regel nicht, haben keine messbare Auswirkung auf die performance. Du bist wahrscheinlich die Optimierung vorzeitig, und in die falsche Richtung.InformationsquelleAutor JB Nizet
Ich kann nicht Antworten, um diese als Kommentar, so dass ich werde einfach gehen Sie vor und machen Sie es eine Antwort.
Und da ordnen Sie die Liste, die getResultList() gibt, die dieselbe variable, die Sie für Ihre eigene leere ArrayList, Ihre Anwendung verliert jede Verbindung zu Ihrer eigenen leere ArrayList und Java sammeln wird es als Müll. Im wesentlichen erstellt es absolut keinen Zweck.
was JB Nizet posted ist genug.
InformationsquelleAutor Gimby
Habe ich etwas ähnliches gemacht, da war ich mit JPA 1:
InformationsquelleAutor ND27
InformationsquelleAutor hakim mourad