PostGIS jdbc sql 查询

PostGIS jdbc sql query

我正在尝试对 postgresql 数据库使用 postgis 扩展,但无法使其以我想要的方式工作。 我正在使用 postgis 2.1.6(从源代码定制构建)和 postgresql-9.4-1201.jdbc4.jar (还有一个带有休眠配置的附加项目,但它可能与这种情况无关)。

我有一些测试代码(主要来自 postgis 示例文件夹):

String dburl="jdbc:postgresql://localhost/mapwebcatalog";
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpass);
Statement stat = conn.createStatement();

{
ResultSet rs = stat.executeQuery("SELECT raw_data_file_points::geometry from raw_data_file_area");

rs.next();
result = (PGobject) rs.getObject(1);
if (result instanceof PGgeometry) {
    System.out.println("PGgeometry successful!");
} else {
    System.out.println("PGgeometry failed!");
}
}

{
ResultSet rs = stat.executeQuery("SELECT raw_data_file_points from raw_data_file_area");
rs.next();
result = (PGobject) rs.getObject(1);
if (result instanceof PGgeometry) {
    System.out.println("PGgeometry successful!");
} else {
    System.out.println("PGgeometry failed!");
}
}

当我 运行 时,我得到 "PGgeometry successful!"(对于第一个 if)和 "PGgeometry failed!"(对于第二个 if)。 区别仅在于列 (::geometry) 的显式类型。

这是正常现象,还是配置有问题? 如果这是正常的并且应该如何,休眠是否应该生成 sql 带有类型转换的查询?

哦,那是个愚蠢的错误。我在数据库中有地理列。使用几何类型一切正常。 或者如果更改 driverconfig.properties 并添加行:

datatype.geography=org.postgis.PGgeometry

它也适用于地理类型(或使用数据库中的几何类型)。