我已经为此苦苦挣扎了一段时间。在 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:
数据库是安装了 PostGIS 的 Amazon RDS 上的 PostgreSql 9.3。列地理点属于“点”类型。我使用 PgAdminIII 创建了这个表
Hibernate Session Factory 道具
<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 对象。
任何帮助,将不胜感激。