HQL,SQL - 获取整个对象(获取距离)

HQL, SQL - Get whole object (Get distance)

我有以下查询,我得到了一个数据类型为 Double 的列表。 在此查询中,我将特定位置的经度和纬度以及距离作为参数。 使用 "distance" 参数,我可以 select 不同位置之间的范围。

我现在的问题是,我想得到一个完整的 "City" - 结果列表中的对象,而不仅仅是来自不同距离(双)的列表。 我应该如何修改我从我的实体 "City" 而不仅仅是 Floats 得到的列表?

    public List<Double> findCityAroundSelectedCity(double longitude, double latitude, float distance) {

    String queryString = "SELECT (6371 * acos (cos(radians(" + latitude
            + ")) * cos(radians(latitude)) * cos(radians(longitude) - radians(" + longitude + "))  + sin(radians("
            + latitude + ")) * sin(radians(latitude)))) AS distance FROM City c HAVING distance < " + distance
            + " ORDER BY distance";

    Query query = entityManager.createNativeQuery(queryString);

    List<Double> list = null;
    list = query.getResultList();

    return list;
}

非常感谢大家的帮助

在查询中添加SELECT *,并将您的实体指定为方法的第二个参数createNativeQuery()...

尝试 SQL 查询,类似于:

SELECT *
FROM ( SELECT *, ( 6371 * ACOS( COS( RADIANS( :lat ) ) * COS( RADIANS( latitude ) ) *
                   COS( RADIANS( longitude ) - RADIANS( :lng ) ) + SIN( RADIANS( :lat ) ) *
                   SIN( RADIANS( latitude ) ) ) ) AS distance
       FROM City ) c
WHERE distance < :dis
ORDER BY distance

Java 部分:

public List<City> findCityAroundSelectedCity( double longitude, double latitude,
                                              float distance )
{
   // queryString should be a private static final, outside this method...
   return (List<City>) entityManager.createNativeQuery( queryString, City.class )
      .setParameter( "lat", latitude ).setParameter( "lng", longitude )
      .setParameter( "dis", distance ).getResultList();
}

顺便说一句,这也会 return 源城市,如果它在 table...