我在用于数据库持久性的Java应用程序中使用Hibernate 5.1.0.Final
。对于我们来说,这将非常方便,因为我们预计会碰到Oracle和Postgres实例,所以我们可以将此ORM作为抽象层。 在former issue when querying geometries using Hibernate-spatial我发布了一些我的配置。
现在的问题是当我们在Oracle中坚持一些几何字段时。在我的POJO我有一个导入:使用Hibernate 5和Oracle将几何存储为SDO_POINT_TYPE
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
)?
编辑:我试图改变为Point
如下所示,但它并没有什么区别,据我所知。
import com.vividsolutions.jts.geom.Point;
(...)
@Column(name = "geom")
protected Point geom;