我正在尝试使用休眠@query参数获取半径内的位置。
@Query("SELECT id, (6371 * acos (cos(radians(:latitude)) * cos(radians(latitude)) * cos(radians(longitude) - radians(:longitude)) + sin(radians(:latitude)) * sin(radians(latitude)))) AS distance FROM gang HAVING distance < :distance ORDER BY distance)")
List<Long> findNearbyGangs(@Param("latitude") double lat, @Param("longitude") double lng, @Param("distance") double distance);
但出现以下错误:
incompatible types: java.util.List<java.lang.Long> cannot be converted to java.util.List<com.example.Gang>
答案 0 :(得分:0)
您遇到的问题是,您实际上试图从查询中获取数据到Long
列表中,而实际上您需要一个Object
列表。这是由于您每行获取多个值(id和距离)的缘故。更改以下代码,它应该可以工作。
@Query("SELECT id, (6371 * acos (cos(radians(:latitude)) * cos(radians(latitude)) * cos(radians(longitude) - radians(:longitude)) + sin(radians(:latitude)) * sin(radians(latitude)))) AS distance FROM gang HAVING distance < :distance ORDER BY distance)")
List<Object> findNearbyGangs(@Param("latitude") double lat, @Param("longitude") double lng, @Param("distance") double distance);
答案 1 :(得分:0)
您的方法名findNearbyGangs
告诉它将返回附近的帮派(帮派实体列表),但是您返回的是List<Long>
,这是查询的错误返回类型。
尝试返回List<Gang>
。