如何用java在Postgis数据库中存储几何点
我试图将一个几何体对象存储到我的postgist数据库中,该数据库有一个带有几何体列的表。我从另一个带有几何列的表中得到了几何值,我打印了我以前得到的值,它是正确的。要存储几何体值,我使用下一个函数:如何用java在Postgis数据库中存储几何点,java,postgresql,postgis,Java,Postgresql,Postgis,我试图将一个几何体对象存储到我的postgist数据库中,该数据库有一个带有几何体列的表。我从另一个带有几何列的表中得到了几何值,我打印了我以前得到的值,它是正确的。要存储几何体值,我使用下一个函数: static void insertaGeometria( Geometry geom, int idInstalacion) throws ClassNotFoundException, SQLException{ Connection congeom = conectarPG
static void insertaGeometria( Geometry geom, int idInstalacion) throws ClassNotFoundException, SQLException{
Connection congeom = conectarPGA();
String geomsql ="INSERT INTO georrepositorio.geometria(id, point) VALUES (?,?)";
PreparedStatement psSE= congeom.prepareStatement(geomsql);
psSE.setInt(1, idInstalacion);
psSE.setObject(2, geom);
psSE.execute();
psSE.close();
congeom.close();
}
但我总是犯这样的错误:
org.postgresql.util.PSQLException:无法推断要用于的SQL类型
org.postgis.Point的一个实例。将setObject()与显式
类型值以指定要使用的类型
有人知道怎么储存吗(
提前感谢!Java客户端。从中我看到了两个想法。尝试使用PGgeometry
而不是Geometry
类型来创建Geometry
。然后,将几何体类型添加到连接congeom
:
((org.postgresql.PGConnection)congeom).addDataType("geometry",Class.forName("org.postgis.PGgeometry"));
根据我的经验,我成功地使用这样的表达式添加了点(请注意,请求的迭代点是我自己的类): 使其工作的maven依赖项是
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.2.0</version>
<exclusions>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>
net.postgis
postgis jdbc
2.2.0
org.slf4j
slf4j api
回写
回归经典
回写
回溯堆芯
请注意,您无需排除依赖项(这是为了我自己的兼容性而需要的)如果发生jpa@bob-cac不确定(我不使用JPA);参见
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.2.0</version>
<exclusions>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>