我有实体的纬度和经度和我想选择那些最接近的给定点。

我找到了这个例子看起来就像它将工作

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

但我宁愿这样做与JPQL因为我有一大堆的其他联接等,感觉更容易做到在JPQL而不是当地的查询。

当我试图像这样的东西的访问用户是抱怨SQRT令牌。

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

有人知道如何编写查询,这样,或许另一种更好的方法吗?

谢谢!/奥斯卡

有帮助吗?

解决方案

据我可以从这个研究告诉我们,可以试错JPQL根本不具备处理这种情况。我不得不重写我的查询本机。

其他提示

该JPQL语参考 说:

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

所以,你没有 POW.

你可以安全地使用地查询。

这办法我喜欢,但是让的查询,而无需的计算,然后作出的计算结果在你的代码。它不应该是一个很大的性能的危险。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top