Postgis, обновить столбец геометрии с помощью Java

#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, но виновником является триггер.