【发布时间】:2016-03-09 17:23:20
【问题描述】:
我在 Java 应用程序中使用 Hibernate 5.1.0.Final 来实现数据库持久性。这对我们来说会很方便,因为我们希望使用 Oracle 和 Postgres 实例,因此我们可以将此 ORM 作为抽象层。
在former issue when querying geometries using Hibernate-spatial 中,我发布了一些我的配置。
现在的问题是当我们在 Oracle 中保留一些几何字段时。在我的 POJO 中,我有一个导入:
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;
【问题讨论】:
标签: hibernate-5.x jts hibernate-spatial