gpt4 book ai didi

java - 在 Hibernate Spatial 中获取 org.postgresql.geometric.PGpoint 而不是 org.postgis.PGgeometry

转载 作者:行者123 更新时间:2023-12-02 06:27:42 25 4
gpt4 key购买 nike

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

相关实体类片段:

@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:

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

Hibernate session 工厂 Prop

 <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 对象。

如有任何帮助,我们将不胜感激。

最佳答案

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

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

关于java - 在 Hibernate Spatial 中获取 org.postgresql.geometric.PGpoint 而不是 org.postgis.PGgeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com