gpt4 book ai didi

java - CriteriaBuilder 半径计算

转载 作者:可可西里 更新时间:2023-11-01 06:30:38 26 4
gpt4 key购买 nike

我正在尝试计算给定的纬度/经度和距离,并且只返回落在该圆距离内的行(数据库也有纬度/经度坐标)。我不知道的是我会怎么做。我目前正在使用 native SQL 并使用纯文本和计算它的半正弦公式,如果我是正确的,则不可能使用 CriteriaBuilder 执行半正弦公式。但是我想使用 CriteriaBuilder 获得相同的结果。我试过使用 hibernate-spatial 依赖项,但我没有让它按照我想要的方式工作。我也遵循了诸如此类的教程。

https://docs.jboss.org/hibernate/search/4.2/reference/en-US/html/spatial.html

我使用的数据库是MySQL。
hibernate 版本 4.3.10。

此外,本教程并没有让我走得更远 Using JPA Criteria Api and hibernate spatial 4 together

那么我如何使用给定的纬度/经度和距离用 MySQL 构建 CriteriaBuilder 查询,并仅检索落在该区域的行,并将它们与存储在数据库中的纬度/经度坐标进行比较。

最佳答案

我已经尝试了以下方法并且有效。

@Query(value = "SELECT  s FROM Address s WHERE 1 = 1 AND " +
"(pow(69.1 * (s.latitude - ?1), 2) + pow(69.1 * (?2 - s.longitude) * cos(s.latitude / 57.3), 2)) < pow(?3,2)"

)
List<Address> findNearbyAddress(double lat, double lng, double radius);

半径 以英里为单位。 ?1, ?2, ?3 是参数占位符。
它需要一些计算来测量与 latitudelongitude 的距离。您不能从 CriteriaBuilder 调用数据库 native 函数

关于java - CriteriaBuilder 半径计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36622642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com