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
它也适用于地理类型(或使用数据库中的几何类型)。
我正在尝试对 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
它也适用于地理类型(或使用数据库中的几何类型)。