Postgres Ошибка операции с типом геометрии в пользовательском запросе CrudRepository sql - PullRequest
0 голосов
/ 28 марта 2020

У меня есть две точки WGS 84 p1 (lonul, latul) в левой верхней точке и p2 (lonbr, latbr) в нижней правой точке, и я хочу увидеть, какой цилиндр пересекается с прямоугольником, который определяется ими, чтобы я сделал следующий запрос к CrudRepository:

CREATE TABLE protected_area
(
    id            serial not null primary key,
    constraint_id integer not null,
    radius    float not null,
    height      float not null,
    coordinates path not null,
    gtype       geometrytype not null,
    name          varchar(50),
);


@Query("SELECT u FROM ProtectedArea u WHERE u.gtype='Cylinder' AND polygon( box(point(:lonul - (180/pi()) * (u.radius/(6378137*cos(pi()*:lonul/180))), :latul - (180/pi()) * (u.radius/6378137)), point(:lonbr + (180/pi()) * (u.radius/(6378137*cos(pi()*:lonbr/180))),:latbr + (180/pi()) * (u.radius/6378137)))) @> polygon(coordinates)")

кажется, что оператор @> указывает, содержится ли геометрия в другом

, но я принимаю эту ошибку

Вызывается: org.hibernate.QueryException: неожиданный символ: '@' [ВЫБРАТЬ u ИЗ ЗАЩИЩЕННОЙ ОБЛАСТИ u ГДЕ u.gtype = 'Цилиндр' И полигон (поле (точка (: lonul - (180 / pi ()) * (u.radius / (6378137 * cos (pi () *: lonul / 180))),: latul - (180 / pi ()) * (u.radius / 6378137)), точка (: lonbr + (180 / pi ()) * (u.radius / (6378137 * cos (pi () *: lonbr / 180))),: latbr + (180 / pi ()) * (u.radius / 6378137)))) @ > многоугольник (координаты)]

...