Я использую Hibernate 5.1.0.Final
в приложении Java для сохранения базы данных. Это будет удобно для нас, поскольку мы ожидаем, что ударим экземпляры Oracle и Postgres, поэтому мы можем использовать этот ORM в качестве уровня абстракции. В former issue when querying geometries using Hibernate-spatial Я опубликовал некоторые из моих настроек.
Проблема теперь в том, что мы сохраняем некоторые поля геометрии в Oracle. В моем POJO у меня есть импорт:Сохранение геометрии как SDO_POINT_TYPE с Hibernate 5 и Oracle
import com.vividsolutions.jts.geom.Geometry;
Так что я определяю следующий атрибут в моем классе:
@Column(name = "geom")
protected Geometry geom;
Он получает сохранялся и я могу использовать предикаты для запроса его. Но, глядя в базе данных я могу увидеть содержимое поля GeoM является:
MDSYS.SDO_GEOMETRY(2001,4326,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(0.094,51.488))
Вместо того, что я хотел бы, что быстрее запрашивать и рекомендуется Oracle:
MDSYS.SDO_GEOMETRY(2001,4326,MDSYS.SDO_POINT_TYPE(0.094,51.488,NULL),NULL,NULL)
Что делать, чтобы сохранить это как точку (SDO_POINT_TYPE
), а не как массив (SDO_ELEM_INFO_ARRAY
)?
EDIT: Я попытался изменить на Point
, как показано ниже, но это не повлияло, насколько я могу судить.
import com.vividsolutions.jts.geom.Point;
(...)
@Column(name = "geom")
protected Point geom;