#java #postgresql #jdbc #geometry #postgis
#java #postgresql #jdbc #геометрия #postgis
Вопрос:
Здравствуйте
у меня странное поведение.
Постгрес 12
POSTGIS=»2.5.4″ [РАСШИРЕНИЕ] PGSQL=»120″ GEOS=»3.8.1-CAPI-1.13.3″ PROJ=»Отн. 6.3.2, 1 мая 2020″ GDAL=»GDAL 3.0.4, выпущен 2020/01/28″ LIBXML= «2.9.7» LIBJSON=»0.13.1″ LIBPROTOBUF=»1.3.0″ РАСТРОВЫЙ
Зависимость Java Postgis:
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.5.0</version>
</dependency>
Код — это:
Connection connection = DriverManager.getConnection(url, props);
((org.postgresql.PGConnection) connection).addDataType("geometry", PGgeometry.class);
Statement statement = connection.createStatement();
statement.execute("UPDATE COORDINATES SET location = 'SRID=4326;POINT(13.3664665 52.573673)' where id = 1");
Это приводит к следующей ошибке:
ERROR: function st_makepoint(double precision, double precision) does not exist
Но когда я выполняю инструкцию update непосредственно в psql, она работает нормально.
Любые другие операторы, которые не включают столбцы геометрии, также работают нормально.
У кого-нибудь есть зацепка?
Спасибо!
Комментарии:
1. Вы хотите сказать, что когда вы запускаете
UPDATE COORDINATES SET location = 'SRID=4326;POINT(13.3664665 52.573673)' where id = 1
напрямую, он обновляется корректно без ошибок?2. да, запуск этого обновления в dbeaver работает корректно, без ошибок.
Ответ №1:
Только что нашел проблему. В этом столбце есть триггер. Пока не знаю, в чем разница между фиксацией java и фиксацией dbeaver, но виновником является триггер.