Hibernate - Order By

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hallo,

ich möchte Daten nach einer Spalte sortieren, die Zeichenketten der Form "x.y" hält, wobei x und y Zahlen sind die 1 oder 2 Ziffern lang sein können. Wenn ich mein HQL-Query absetze und per order by sortieren lasse, dann sortiert er nach der natürlichen String-Ordnung. Ich möchte aber eine eigene Ordnung (statt 3.1, 3.11, 3.2 möchte ich 3.1, 3.2, 3.11).
Welche Möglichkeiten gibt es, die Reihenfolge von order by zu beeinflussen? Kann man da überhaupt Einfluss drauf nehmen oder obliegt es einzig der DB, welche Reihenfolge zurückkommt?

Programmatisches sortieren ist in diesem Fall leider keine akzeptable Lösung, denn ich benutze auch Paging (firstResult, maxResults). Wenn ich das Sortieren programmatisch mache, müsste ich also auch das Paging programmatisch machen und dann werden die DB-Zugriffe inperformant, weil die ResultSets zu groß werden.

Kennt jemand eine schöne Lösung für das Problem?

TIA byto
 
entweder in der DB eine zweite Spalte mit 3.01, 3.02, 3.11 (oder nur das und im Programm die 0en löschen)
oder nach substring sortieren:

order by SUBSTR (nr, 1, 1), SUBSTR (nr, 3, length)*1

*1 damit es in eine Zahl umgwandelt wird, gibts vielleicht auch als Funktionen je nach DB (und Hibernate versteht es hoffentlich..),
Längenfunktion brauch man auch falls es nicht SUBSTR(3 bis Rest) gibt usw.

> Reihenfolge von order by zu beeinflussen

dazu kann ich nix sagen 😉
 
Danke, mit String-Funktionen funktionierts. Ist zwar etwas unschön, aber was solls. 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben