Ich habe eine Klasse Person, die eine Reihe von Bücher hat. Im Einzelfall ist eine sortierte oder sortierte Sammlung nicht sinnvoll.Hibernate: ein Set bestellen
Sagen Sie jetzt, dass ich eine Suchseite mit einer Tabelle habe, die den Join von Person und Buch zeigt. Ich möchte in der Lage sein, die Ergebnisse nach Feldern von Person UND Buch zu sortieren und dann eine Liste aus Hibernate zu erhalten und darüber zu iterieren.
Da die Auflistung ein Set ist, ist die Reihenfolge der Bücher verschwunden (PersistentSet of Hibernate umschließt ein HashSet von Büchern, das nicht geordnet ist).
Also, mit diesem Ansatz kann ich nicht Ergebnisse auch nach Buch Felder geordnet haben.
Wenn ich die Auflistung von Set zu List ändere, ist mein Modell semantisch falsch. Es gibt keine Bedeutung für die Ordnung im Modell.
Gibt es einen Ansatz, um die Reihenfolge der Bücher zu halten? Vielleicht gibt es eine Möglichkeit für das PersistentSet, ein LinkedHashSet (welches geordnet ist) zu umbrechen, wobei die Reihenfolge durch meine Suchkriterien definiert wird?
Prost!
Danke für die Antwort (+1). Ja, das habe ich gesehen. Aber im Beispiel haben sie festgelegt, dass die Reihenfolge auf einem bestimmten Feld liegt. Ich möchte, dass diese Felder über die Kriterien-API festgelegt werden, je nachdem, worauf der Benutzer in der Benutzeroberfläche geklickt hat. –
Sie können auch eine Reihenfolge für Ergebnisse in einer Kriterienabfrage angeben, unabhängig von dem, was Sie im Mapping angeben. http://docs.jboss.org/hibernate/stable/core/reference/en/html/querycriteria.html#querycriteria-order –
Ja, Sie können, aber die Reihenfolge leider durch die Zuordnung (oder @OrderBy) hat Vorrang , wodurch die durch die Kriterien festgelegte Reihenfolge unbrauchbar wird. Oder zumindest kommt es nach der Sortierung der Order-by des Mappings. –