【问题标题】:java.lang.ClassCastException: org.postgresql.util.PGobjectjava.lang.ClassCastException:org.postgresql.util.PGobject
【发布时间】:2012-05-03 01:10:21
【问题描述】:

代码优先:

PGpoint coordinates = (PGpoint) rs.getObject(4);

导致 ClassCastException。

在项目上引用 postgresql-9.1-901.jdbc3.jar。

在 android 应用程序上返回记录集。有什么办法可以规避?

TIA

【问题讨论】:

  • 基本上:rs.getObject(4);PGObject,而不是 PGPoint
  • 感谢输入 assylias。你能详细说明一下吗?因为对我来说 PGPoint 是 PGObject ... 的后代 :)
  • 如果您希望我们详细介绍,您应该向我们提供更多信息。有时会发生吗?使用所有 PGxxx 对象?为什么你期望它是一个PGpoint?等
  • @user1214454 让我们假设您的 PGObject 是一个 PGbox,它不是一个 PGPoint,并且您显示的行会抛出这种异常。
  • 您可以创建自定义类型以支持它stackoverflow.com/questions/53548731/…

标签: android postgresql-9.1


【解决方案1】:

这看起来与问题org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry 非常相似。下面引用的那里提供的答案提到 postgis.jar 没有安装属性。这可能也适用于您的情况吗? 你是如何安装 postgis 的?

如果您在提供 JDBC 的 Web 容器中使用 Hibernate Spatial 由容器通过 JNDI,那么 postgis.jar 也应该是 与 JDBC 驱动程序一起安装,不应包含在 WEB-INF/lib 目录

【讨论】:

  • 您好,Paul-Jan。不,我不使用休眠。为了澄清我的问题,我确实希望它是一个 POINT,因为它是在表级别强制执行的。 CONSTRAINT enforce_dims_geometry CHECK (ndims(geometry) = 2) 所以,简而言之,它是一个支持 postgis 的数据库。我必须将 postgis.jar 添加到项目中的外部库吗?如果是这样,通过结果集访问 POINT 类型的几何图形的正确方法是什么? TIA。