2009-05-24 14 views
3

Also habe ich mich damit abgefunden, dass ich die Reihenfolge einer Liste nicht zuverlässig nutzen kann, weil Hibernate es umkehrt und jeder sagt, mach es nicht, also habe ich meiner Klasse ein Feld als Position hinzugefügt. Ich habe:Wie sortiere ich die Liste nach einer Eigenschaft der Objekte in der Sammlung?

@Entity 
class Procedure { 
... 
int procedureId; 
List<Task> tasks; 
... 
} 

@Entity 
class Task { 
... 
int taskId; 
int position; 
} 

Jetzt weiß ich nicht, wie man Interaktion mit der Liste nähert. Sollte ich es einfach nach Position sortieren, wenn ich es zum ersten Mal aus der db herausgeholt habe, und damit anfangen, damit zu arbeiten, dann kann ich den ganzen Code zur Umordnung des Benutzers, den ich bereits geschrieben habe, zurückgeben und dann alle Positionen auf Save auf die Bestellung zurücksetzen die Liste, auf die ich zurückgreifen kann, wenn ich zurückkomme?

SKIP Actual FRAGE HIER:

Dies scheint der beste Ansatz zu sein, aber wie sortiere ich die Liste durch eine Eigenschaft der Objekte in der Sammlung?

Antwort

5

von Position sortieren, zum Beispiel Sie

java.util.Collections.sort(tasks, new Comparator<Task>() { 
@Override 
public int compare(Task t1, Task t2) { 
    return t1.getPosition() - t2.getPosition(); 
}); 

Yuval = 8-)

+0

Dies ist die Lösung, die ich jetzt benutze, vielen Dank. – Joshua

3

Wenn Sie die Reihenfolge der Liste soll erhalten bleiben von Hibernate verwenden können, werden Sie wahrscheinlich <list-index> zur Karte verwenden sollten die Indexspalte, wie in 6.2.3 Indexed Collections beschrieben, anstatt sie als Aufgabenfeld hinzuzufügen und selbst zu sortieren.

Auf diese Weise muss sich Ihr Java-Code nicht um die Indexwerte kümmern. Die Liste wird ordnungsgemäß sortiert, wenn sie von Hibernate zurückgegeben wird, und Hibernate kümmert sich um die Aktualisierung der Indizes, wenn die Liste geändert wird.

+0

Ah, endlich da ist es, die richtige Lösung, obwohl, wenn ich versuche, es zu implementieren, die Datenbank habe ich schon balks, also könnte ich nicht die echte Lösung dieses Projekt implementieren, obwohl als nächstes sicher. :) Danke! – Joshua

Verwandte Themen