postgis 확장이 설치된 postgres 데이터베이스가 지원하는 다음 저장소 클래스가 있습니다.
import java.util.List;
import java.util.Set;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface ForumRepository extends PagingAndSortingRepository<ForumEntity, Long> {
@Query(value = "SELECT *"
+ " FROM forums"
+ " WHERE ST_DWithin(location, 'POINT(:lon :lat)', :meters,true)"
+ " ORDER BY ST_Distance(location, 'POINT(:lon :lat)') ASC",
countQuery = "SELECT count(*) FROM forums WHERE ST_DWithin(location, 'POINT(:lon :lat)', :meters,true)",
nativeQuery = true)
List<ForumEntity> findInRadius(@Param("lat") Double lat,@Param("lon") Double lon,@Param("meters") Double meters, Pageable pageable);
}
이 SpringData JPA 저장소에는 특정 반경 내의 모든 포럼을 찾기 위해 데이터베이스를 쿼리하는 하나의 메서드 정의가 포함되어 있습니다. ST_DWithin
이 쿼리를 수행하기 위해 postgis의 방법 과 결합 된 네이티브 쿼리와 함께 명명 된 매개 변수 를 사용하고 있습니다.
Spring Boot는 불만없이 정상적으로 시작되고 애플리케이션이 성공적으로 시작되었다고보고합니다. 그러나 해당 쿼리를 호출하려고하면 다음 예외가 발생합니다.Parameter with that name [lat] did not exist; nested exception is java.lang.IllegalArgumentException: Parameter with that name [lat] did not exist
위치 지정 매개 변수로 전환을 시도했지만 매개 변수가 존재하지 않는다는 동일한 오류가 발생했습니다.
Spring Boot 1.5.4를 사용하고 있습니다.
어떤 아이디어?