Я пытаюсь выполнить этот запрос в моей Java кода, используя Hibernate и гибернации Spatial:Hibernate пространственное исключение запроса, но в Postgres консоль работает
Query q = s.createQuery("SELECT c FROM crimes c WHERE ST_DWITHIN(ST_MakeLine(ARRAY['SRID=4326;POINT(-49.30621000000001 -25.515020000000003)','SRID=4326;POINT(-49.30619 -25.515770000000003)','SRID=4326;POINT(-49.306180000000005 -25.5162)','SRID=4326;POINT(-49.305780000000006 -25.5162)']), c.location, 0.0001) = true;");
Но этот запрос вызывает исключение:
e = (org.hibernate.hql.internal.ast.QuerySyntaxException) org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE_BRACKET, found ',' near line 1, column 151 [SELECT c FROM com.safecity.server.db.model.EntityCrime c WHERE ST_DWITHIN(ST_MakeLine(ARRAY['SRID=4326;POINT(-49.305820000000004 -25.515330000000002)','SRID=4326;POINT(-49.306200000000004 -25.515340000000002)','SRID=4326;POINT(-49.30619 -25.515770000000003)','SRID=4326;POINT(-49.306180000000005 -25.5162)','SRID=4326;POINT(-49.305780000000006 -25.5162)']), c.location, 0.0001) = true]
Я проверил запрос, и я не могу найти ошибку. Но, если я получаю этот же запрос и выполняю на консоли postgres, запрос выполняется без ошибок и возвращает правильное значение.
Пожалуйста, кто-нибудь может мне помочь? Спасибо.
Подходя к этому, упростите запрос. 'ST_DWITHIN()' уже возвращает 'boolean'. Нет необходимости добавлять '= true', это просто шум:' SELECT c FROM crime c WHERE ST_DWITHIN (ST_MakeLine (ARRAY [...]), c.location, 0.0001) ' –
Спасибо, я изменю это – brunoroberto