Pregunta

Estoy tienen entidades con latitud y longitud y me gustaría para seleccionar los más cercanos a un punto dado.

He encontrado este ejemplo que parece que funcionaría

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

Pero yo preferiría hacerlo con JPQL ya que tengo un montón de otras une etc que se siente más fácil de hacer en JPQL lugar de consulta nativa.

Cuando intento algo como esto la APP se queja de la ficha SQRT.

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

Cualquier persona tiene sabe cómo escribir una consulta de este tipo, o tal vez otro enfoque mejor?

Gracias! / Oskar

¿Fue útil?

Solución

Por lo que yo puedo decir de la investigación de este y puede JPQL prueba y error es simplemente que no están equipados para manejar esta situación. Tenía que volver a escribir mis preguntas como nativo.

Otros consejos

El JPQL referencia del lenguaje dice que:

  

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

Por lo tanto, usted no tiene POW.

Se puede utilizar con seguridad una consulta nativa.

El enfoque que prefiero, sin embargo, es de hacer la consulta sin los cálculos y luego hacer el cálculo del resultado en el código. No debería ser un peligro de gran rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top