我一直在努力解决这个问题。在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。列geopoint的类型为“point”。我使用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对象。
任何帮助都将不胜感激。
答案 0 :(得分:1)
point
是内置的PostgreSQL核心类型,而不是PostGIS类型。
如果您要使用PostGIS,我想您希望列类型为geometry
。尝试更改列类型;如果然后将PostGIS点存储在其中,它应该按预期运行。