Я пытаюсь проанализировать этот SQL-запрос, используя Spring Data JPA, чтобы использовать его в своем приложении. Это запрос Postgresql, использующий некоторые геопространственные функции с использованием Postgis. По сути, этот запрос пытается найти все записи в таблице, которые находятся в определенном радиусе поиска заданной долготы и широты.
SQL-запрос:
@Query(value = "SELECT P.ID, P.PLACENAME, P.CATEGORY, P.SUBCATEGORY, A.GEOLOCATION,
A.STREETNAME, A.TOWN, A.STATE, A.COUNTRY, ST_Distance(A.geolocation\\:\\:geography,
ST_GeomFromText('POINT(:lon :lat)', 4326)\\:\\:geography, false)/1000.00 AS DISTANCE
FROM PLATFORM_VENDOR_COMMON P JOIN ADDRESS A ON P.ADDRESS_ID = A.ADDRESS_ID WHERE
ST_DWithin(A.geolocation\\:\\:geography, ST_GeomFromText('POINT(:lon :lat)',
4326)\\:\\:geography, :radius, false) ORDER BY A.geolocation\\:\\:geography
ST_GeomFromText('POINT(:lon :lat)', 4326)\\:\\:geography OFFSET :pageNumber LIMIT
20", nativeQuery = true)
List findAllNearby(@Param("lon") Double lon, @Param("lat")
Double lat,
@Param("radius") Integer radius, @Param("pageNumber") Integer pageNumber);
И ожидаю, что именованные запросы заменятся на соответствующих местах, но почему-то Spring JPA не может преобразовать эту информацию в оператор SQL, и я получаю эту ошибку:
Я пытаюсь проанализировать этот SQL-запрос, используя Spring Data JPA, чтобы использовать его в своем приложении. Это запрос Postgresql, использующий некоторые геопространственные функции с использованием Postgis. По сути, этот запрос пытается найти все записи в таблице, которые находятся в определенном радиусе поиска заданной долготы и широты. SQL-запрос: [code]SELECT P.ID, P.PLACENAME, P.CATEGORY, P.SUBCATEGORY, A.GEOLOCATION, A.STREETNAME, A.TOWN, A.STATE, A.COUNTRY, ST_Distance(A.geolocation::geography, ST_GeomFromText('POINT(:lon :lat)', 4326)::geography, false)/1000.00 AS DISTANCE FROM PLATFORM_VENDOR_COMMON P JOIN ADDRESS A ON P.ADDRESS_ID = A.ADDRESS_ID WHERE ST_DWithin(A.geolocation::geography, ST_GeomFromText('POINT(:lon :lat)', 4326)::geography, ?, false) ORDER BY A.geolocation::geography ST_GeomFromText('POINT(:lon :lat)', 4326)::geography OFFSET ? LIMIT 20 [/code] Я пытаюсь выполнить этот запрос в интерфейсе JpaRepository, используя: [code] @Query(value = "SELECT P.ID, P.PLACENAME, P.CATEGORY, P.SUBCATEGORY, A.GEOLOCATION, A.STREETNAME, A.TOWN, A.STATE, A.COUNTRY, ST_Distance(A.geolocation\\:\\:geography, ST_GeomFromText('POINT(:lon :lat)', 4326)\\:\\:geography, false)/1000.00 AS DISTANCE FROM PLATFORM_VENDOR_COMMON P JOIN ADDRESS A ON P.ADDRESS_ID = A.ADDRESS_ID WHERE ST_DWithin(A.geolocation\\:\\:geography, ST_GeomFromText('POINT(:lon :lat)', 4326)\\:\\:geography, :radius, false) ORDER BY A.geolocation\\:\\:geography ST_GeomFromText('POINT(:lon :lat)', 4326)\\:\\:geography OFFSET :pageNumber LIMIT 20", nativeQuery = true) List findAllNearby(@Param("lon") Double lon, @Param("lat") Double lat, @Param("radius") Integer radius, @Param("pageNumber") Integer pageNumber); [/code] И ожидаю, что именованные запросы заменятся на соответствующих местах, но почему-то Spring JPA не может преобразовать эту информацию в оператор SQL, и я получаю эту ошибку: [code][ERROR: parse error - invalid geometry\n Hint: \"POINT(:l\"