0

私はしばらくこれに苦労してきました。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:

DB は、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 オブジェクトにすることを意図しているようです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

point is a built-in PostgreSQL core type, not a PostGIS type.

I think you want the column type to be geometry if you're going to work with PostGIS. Try changing the column type; if you then store PostGIS points in it, it should behave as expected.

于 2013-12-04T03:56:25.887 に答える