Получение org.postgresql.geometric.PGpoint вместо org.postgis.PGgeometry в Hibernate Spatial

Я боролся с этим некоторое время. Запуск на 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:

БД — это PostgreSql 9.3 на Amazon RDS с установленным PostGIS. Столбец геоточка имеет тип "точка". Я создал эту таблицу с помощью 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.

Любая помощь будет оценена по достоинству.


person Zerkz    schedule 04.12.2013    source источник
comment
Я создал PGpointType, который является настраиваемым типом, чтобы преобразовать его перед сохранением в базе данных: stackoverflow.com/questions/53548731/   -  person Jonathan JOhx    schedule 13.12.2018


Ответы (1)


point — это встроенный тип ядра PostgreSQL, а не тип PostGIS.

Я думаю, вы хотите, чтобы тип столбца был geometry, если вы собираетесь работать с PostGIS. Попробуйте изменить тип столбца; если вы затем сохраните в нем точки PostGIS, он должен вести себя так, как ожидалось.

person Craig Ringer    schedule 04.12.2013
comment
Я думаю, что только что понял это ... как только я задал этот вопрос, я пошел и перенастроил столбец. Я сообщу о своих выводах. Спасибо за указание на это. - person Zerkz; 04.12.2013
comment
Ага. Это было оно. Это всегда мелочи. - person Zerkz; 04.12.2013