Spring JPA не может анализировать собственный SQL-запрос с одной кавычкойJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring JPA не может анализировать собственный SQL-запрос с одной кавычкой

Сообщение Anonymous »

Я пытаюсь проанализировать этот SQL-запрос, используя Spring Data JPA, чтобы использовать его в своем приложении. Это запрос Postgresql, использующий некоторые геопространственные функции с использованием Postgis. По сути, этот запрос пытается найти все записи в таблице, которые находятся в определенном радиусе поиска заданной долготы и широты.
SQL-запрос:

Код: Выделить всё

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
Я пытаюсь выполнить этот запрос в интерфейсе JpaRepository, используя:

Код: Выделить всё

    @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, и я получаю эту ошибку:

Код: Выделить всё

[ERROR: parse error - invalid geometry\n  Hint: \"POINT(:l\" 

Подробнее здесь: [url]https://stackoverflow.com/questions/77627917/spring-jpa-can-not-parse-a-native-sql-query-with-a-single-quote[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»