gpt4 book ai didi

java - JPA(Hibernate) - 按经度/纬度查找最近的 10 个对象

转载 作者:行者123 更新时间:2023-12-02 09:16:07 25 4
gpt4 key购买 nike

如何按经度/纬度查询最近的 10 个对象(在我的例子中为经销商)。

每个经销商都有经度/纬度坐标。我正在使用 Spring Data 进行简单查询,但据我所知,没有选项可以使用 Spring Data 进行此类查询。

最佳答案

如果您可以在底层数据库中执行此操作,则可以将命名 native 查询添加到您的实体类,并使用实体管理器来执行该查询。

例如,我的 GeoUnit 类有一个地理围栏 native 查询,采用纬度和经度两个参数:

@NamedNativeQuery(name = "GeoUnit.geofencing", query = "SELECT * FROM GeoUnit g WHERE " +
"g.shape.STContains(geography::STPointFromText('POINT(' || :longitude" +
" || ' ' || :latitude || ')', 4326)", resultClass = GeoUnit.class)
public class GeoUnit {
// ...
}

调用它:

entityManager.createNativeQuery("GeoUnit.geofencing").setParameter("longitude", lon)
.setParameter("latitude", lat).getResultList();

要让您的实体类包含 Java 中的地理空间数据类型(不一定必须),您可以例如使用 Hibernate Spatial:http://www.hibernatespatial.org/

关于java - JPA(Hibernate) - 按经度/纬度查找最近的 10 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45121657/

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