【问题标题】:Getting org.postgresql.geometric.PGpoint instead of org.postgis.PGgeometry in Hibernate Spatial在 Hibernate Spatial 中获取 org.postgresql.geometric.PGpoint 而不是 org.postgis.PGgeometry
【发布时间】:2013-12-20 09:57:36
【问题描述】:

我已经为此苦苦挣扎了一段时间。在 Tomcat 7.0.47 上运行

相关实体类sn-p:

@Column(name = "geopoint", columnDefinition = "org.postgis.Geometry")
@Type(type = "org.hibernate.spatial.GeometryType")
private com.vividsolutions.jts.geom.Point geopoint;

这是我正在使用的库:

Hibernate Spatial 4.0-M1
postgis-jdbc 2.1.0SVN (used 1.5.3 before, same issue.)
Hibernate 4.2.7

数据源信息

Datasource = org.apache.tomcat.jdbc.pool.DataSource
Driver Class Name = org.postgis.DriverWrapper
JDBC URL Beginning = jdbc:postgresql_postGIS:

数据库是安装了 PostGIS 的 Amazon RDS 上的 PostgreSql 9.3。列地理点属于“点”类型。我使用 PgAdminIII 创建了这个表

休眠会话工厂道具

 <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
 <prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</prop>
 <prop key="hibernate.showsql">true</prop>

我已经调试了代码,发现 JDBC 似乎正在返回 PGPoint。 PGGeometryValueExtractor.toJTS(Object) 接收一个 PGPoint。似乎 Hibernate Spatial 打算将其作为 org.postgis.Geometry 或 org.postgis.PGGeometry 对象。

任何帮助将不胜感激。

【问题讨论】:

标签: java hibernate postgresql postgis hibernate-spatial


【解决方案1】:

point 是内置的 PostgreSQL 核心类型,而不是 PostGIS 类型。

如果您要使用 PostGIS,我认为您希望列类型为 geometry。尝试更改列类型;如果您随后将 PostGIS 点存储在其中,它应该会按预期运行。

【讨论】:

  • 我想我只是想通了……就在我提交这个问题时,我去重新配置了该列。我会报告我的发现。感谢您指出这一点。
  • 是的。就是这样。总是小事。
猜你喜欢
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
相关资源
最近更新 更多