2010-11-18 6 views
1

Es ist möglich, Hibernate (vorzugsweise die Kriterien-API) zu verwenden, um eine mySql-Funktion zum Sortieren nach zu verwenden.Ruhezustand - Injizieren von MySql-Funktionen

Die Funktion Suche zu verwenden: -

SQRT(POW(69.1 * ({alias}.latitude - 51.3814282) , 2) + POW(69.1 * ( -2.3574537 - {alias}.longitude) * COS({alias}.latitude/57.3) , 2)) 

, wo die {alias} bei

criteria.createCriteria("location.address"); 

verwurzelt ist Alles, was ich zu tun bin auf der Suche nach ist durch die oben bestellte die Ergebnisse haben Entfernungsgleichung, aber bis jetzt habe ich keinen Weg gefunden, die Projektionsoptionen oder die Reihenfolge zu verwenden. Optionen und mir sind die Ideen ausgegangen.

Cheers, R

Antwort

1

Diese Frage nicht genau beantworten, aber was man aus dem Criteria API bekommen, ist eine Reihe von schönen Objekte, die an ihren Grenzflächen haften. Haben Sie daran gedacht, die Reihenfolge der Abfragen zu erhöhen und sie stattdessen im Speicher zu sortieren? Es sollte einfach sein, diese Ordnungsfunktion in Bezug auf einen Komparator auszudrücken, und dann können Sie die Sammlung einfach sortieren.

Ich weiß nicht, wie man es in der .addOrder Funktion der Kriterien API ausdrücken kann. Sie können beliebigen Einschränkungen zu SQL hinzufügen, aber es sieht so aus, als ob Sie nicht nach beliebigem SQL sortieren können.

Viel Glück.

+0

Prost Tim, es ist nicht genau das, was ich suchte, aber es macht den Job. Ich bin etwas besorgt über die Leistung, da der Datensatz wächst, aber für den Moment wird es gut tun, in Erinnerung zu sortieren :) – Rob