Basi c info
Я работаю в среде Boot-Spring. Моя база данных хранит геометрии (точки).
Требование
Мне нужно реализовать аннотацию @Query для использования функций Postgis и использования заполнителей, где это необходимо.
Запрос, который я тестировал на БД:
SELECT id
FROM schema.foo a
WHERE 5140000 > st_distance(
'SRID=25832;POINT(0 0)'::geometry,a.geom)
И он отлично работает (но если у вас есть лучшие идеи о том, как разработать запрос, дайте мне знать). Теперь вместо 'POINT (0 0)' я должен использовать заполнители типа 'POINT (: широта: долгота)'.
Предыдущая попытка
В хранилище Я попробовал этот синтаксис
@Query(nativeQuery = true, value = "SELECT id FROM schema.foo a WHERE :radius > st_distance('SRID=25832;POINT(:latitude :longitude)'::geometry,a.geom)")
List<Long> findNearBy(@Param("radius") Double radius, @Param("latitude") String latitude,
@Param("longitude") String longitude);
В сервисе, который я написал
return repository.findNearBy(100, "0", "0");
Но во время выполнения эта попытка вызывает
Invalid filter-parameter name format [latitude]; expecting {filter-name}.{param-name}
Эта ошибка меня смущает много. Это первый раз, когда я сталкиваюсь с этим.
Вопрос
Что я должен исправить, чтобы достичь своей цели? Заранее спасибо!