Frage

Ich habe Entitäten mit Breiten- und Längengrad, und ich mag diejenigen am nächsten zu einem bestimmten Punkt wählen.

Ich fand dieses Beispiel, dass sieht aus wie es funktionieren würde

SELECT *,
    SQRT(POW((69.1 * (locations.latitude - 27.950898)) , 2 ) +
    POW((53 * (locations.longitude - -82.461517)), 2)) AS distance
FROM locations
ORDER BY distance ASC
LIMIT 5

Aber ich würde es mit JPQL bevorzugen, da ich ein paar andere habe verbindet etc., die in JPQL anstelle von nativen Abfrage zu tun leichten anfühlt.

Wenn ich versuche, so etwas wie dies die PPV über die SQRT Token beschwert.

SELECT DISTINCT p, SQRT(....) AS distance, FROM Place p .... ORDER BY distance ASC

Jeder hat weiß, wie eine Abfrage wie diese zu schreiben, oder vielleicht einen anderen Ansatz besser?

Danke! / Oskar

War es hilfreich?

Lösung

Soweit ich diesen und kann Versuch von der Erforschung und Fehlern JPQL wird sagen kann einfach nicht dieses Szenario behandeln ausgestattet. Ich musste meine Fragen als native umschreiben.

Andere Tipps

Die JPQL Sprachreferenz sagt dass:

  

functions_returning_numerics :: = ABS (simple_arithmetic_expression) | SQRT (simple_arithmetic_expression) | MOD (simple_arithmetic_expression, simple_arithmetic_expression) | SIZE (collection_valued_path_expression)

Also, Sie haben nicht POW.

Sie können sicher eine native Abfrage verwenden.

Der Ansatz, den ich lieber, obwohl, ist die Abfrage zu machen, ohne die Berechnungen und macht dann die Berechnung auf dem Ergebnis in Ihrem Code. Es sollte keine große Leistung Gefahr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top