有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PostGIS jdbc sql查询

我正在尝试将postgis扩展用于postgresql数据库,但无法以我希望的方式运行它。 我正在使用postgis 2.1.6(从源代码定制构建)和postgresql-9.4-1201。jdbc4。罐子 (还有另外一个带有hibernate配置的项目,但它可能与本例有关)

我有一些测试代码(主要来自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!");
}
}

当我跑步时,我会说“成功!”(对于第一个if)和“PGgeometry failed!”(用于第二个if)。 不同之处在于列(::geometry)的显式类型

这是正常的,还是配置有问题? 如果这是正常的,那么hibernate是否应该使用类型转换生成sql查询


共 (1) 个答案

  1. # 1 楼答案

    哦,那是个愚蠢的错误。数据库里有地理栏。使用“几何体”类型,一切正常。 或者如果更改驱动器配置。属性和添加行:

    datatype.geography=org.postgis.PGgeometry
    

    它也可以使用地理类型(或者在db中使用几何体类型)