java - ClassCastException:org.postgresql.util.PGobject 无法转换为 org.postgis.Point

标签 java postgresql postgis classcastexception

我从结果集中获取列并将地理位置检索为 PGObject。在下一步中,我想将其转换为 org.postgis.Point 但出现以下异常。

你知道如何从 PGObject 获取纬度和经度吗? 实际上我想将 PGObject 类型转换为 org.postgis.Point。

我尝试过这个,但不起作用。 在结果集中:

(PGobject) rs.getObject("geolocation"),

在对象的构造函数中。

this.geolocation = (Point) geolocation;

异常(exception):

java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to org.postgis.Point
at com.kaloudia.api.domain.custom.CompanyResultView.<init>(CompanyResultView.java:87) ~[classes/:na]
at com.kaloudia.api.manager.SearchManager.lambda$searchCompanies$0(SearchManager.java:166) ~[classes/:na]
at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93) ~[spring-jdbc-4.2.5.RELEASE.jar:4.2.5.RELEASE]

最佳答案

如果您想使用org.postgis.Point,您需要将postgis插件安装到您的postgres和postgis jdbc驱动程序以及postgres jdbc驱动程序。

之后,如果您的列类型是 postgis point,您将能够执行 PGgeometry geolocation = (PGgeometry) rs.getObject("geolocation");。请注意,postgres 几何类型与 postGIS 几何类型不同

最后你应该做一个额外的操作:org.postgis.Geometry geom = geolocation.getGeometry(); geom 应该是 org.postgis.Point 类型。

关于java - ClassCastException:org.postgresql.util.PGobject 无法转换为 org.postgis.Point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37905505/

相关文章:

sql - 如何从多边形中删除相同多边形的多个条目?

python - 在 postgres 中使用 sqlalchemy 访问复合数据类型

java - 在 eclipse 中为生成的 toString、hashCode 和 equals 添加注解

java - OneToMany 将 POJO 映射到 JSON Spring

postgresql - 使用 "OR"条件改进 SELECT 以避免 Postgres 中的 coSTLy Seq Scan 并使其成为索引扫描?

Postgresql 根据基于天的日历表计算占用率

rust - 特征 `serde::Deserialize<' _ >` is not implemented for ` diesel_geography::types::GeogPoint`

java - 方法 cancel() 和方法 interrupt() 是否做重复工作?

java - java中使用jackson进行继承反序列化

java - 如何忽略特定 jar 的 JAVA_TOOL_OPTIONS ?