有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

每个分配器都有经度/纬度坐标。我使用和Spring数据进行简单的查询,但正如我所知,没有选择使用Spring数据进行此类查询


共 (1) 个答案

  1. # 1 楼答案

    如果可以在底层数据库中执行此操作,则可以向实体类添加一个名为的本机查询,并使用实体管理器执行该查询

    例如,myGeoUnit类有一个GeoFenging本机查询,使用两个纬度和经度参数:

    @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/