9 Stimmen

Abrufen von Hibernate-Abfrageergebnissen als Ergebnismenge anstelle einer Liste

Hallo, Ich bin neu bei hibernate. Ich muss sagen, es vereinfacht wirklich alles für die SQL-Abfrage. Allerdings ist die Manipulation des zurückgegebenen Ergebnisses ein Kopfschmerz für mich im Moment.

Das Ergebnis wird als Liste zurückgegeben. Die meiste Zeit möchte ich wirklich das Ergebnis in Ergebnismenge sein, so dass ich es einfacher manipulieren kann, wie mit Ergebnismenge, können Sie Wert durch Spaltennamen oder Index angeben. In List, bin ich ziemlich viel im Besitz von eigenen noobity.

In einigen Fällen kann ich die Liste in einer JSF-Datentabelle abrufen und dann einfach das Mitglied direkt aufrufen. Das kann ich nicht immer tun. Fragen Sie mich nicht warum. @.@ Kopfzerbrechen.

Gibt es eine Möglichkeit, Resultset anstelle von Liste für Hibernate zu erhalten?

4voto

DABrake Punkte 69

Das Thema ist zwar schon etwas älter, aber ich kann nicht widerstehen:

    // Code for iterating over a list of objects
    for(MappedClass mappedCless : list){
        String name = mappedClass.getName();
        String id = mappedClass.getId();
        // further logic
    }

4voto

Vovka Punkte 599

Dies kann notwendig sein, wenn Sie eine große Datenbank haben und die Ergebnisse der Liste nicht in den Speicher passen. Verwenden Sie scroll() anstelle von list():

Query query = session.createQuery(query);
query.setReadOnly(true);
setFetchSize(Integer.MIN_VALUE); //MUST use Integer.MIN_VALUE, other value=fetch all
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
// iterate over results
while (results.next()) {
    Object row = results.get();
}
results.close();

2voto

Haikal Nashuha Punkte 2808

Ok, irgendwie habe ich es geschafft, dass es funktioniert! Ich bin so glücklich! Für diejenigen, die versuchen zu finden, wie man die Liste von Hibernate Abfrage zurückgegeben zu manipulieren, im Grunde, was ich tat, war.

//previous code
list = (List<MappedClass>)query.list();

Von dort aus soll die Liste die gemappte Klasse enthalten, auf die Sie mit dem Iterator zugreifen können und anschließend den Getter verwenden, um den Wert abzurufen. Beispiel

//previous code
for (int i =0; i<list.size(); i ++) {
  String name;
  String id;
  name = list.get(i).getName();
  id = list.get(i).getId();

  //add your data manipulation here
}

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X