Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA(Hibernate)-按经度/纬度查找最近的10个对象_Java_Spring_Hibernate_Jpa_Spring Data - Fatal编程技术网

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

Java JPA(Hibernate)-按经度/纬度查找最近的10个对象,java,spring,hibernate,jpa,spring-data,Java,Spring,Hibernate,Jpa,Spring Data,如何按经度/纬度查询最近的10个对象(在我的例子中是分销商) 每个分配器都有经度/纬度坐标。我正在使用和Spring数据进行简单查询,但据我所知,没有选择使用Spring数据进行此类查询。如果可以在基础数据库中执行此操作,则可以将命名的本机查询添加到实体类中,并使用实体管理器执行该查询 例如,myGeoUnit类有一个GeoFenging本机查询,使用两个纬度和经度参数: @NamedNativeQuery(name = "GeoUnit.geofencing", query = "SELECT

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


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

如果可以在基础数据库中执行此操作,则可以将命名的本机查询添加到实体类中,并使用实体管理器执行该查询

例如,my
GeoUnit
类有一个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:

您可以根据需要使用自定义查询来获取数据,类似于
@query(“SELECT t.title FROM Todo t where t.id=:id”)字符串findTitleById(@Param(“id”)Long id)这没有用。我不需要按id查找分发服务器。使用存储过程如何?如果查询很复杂,并且您不想通过指定自定义参数来处理它,那么这里有一个指南可以帮助您。看见您必须在答案中显示的查询中添加
ORDER BY
LIMIT
OFFSET
子句,以获得最近/最远的10。