我Hibernate 5.1.0.Final
在 Java 应用程序中使用数据库持久性。这对我们来说会很方便,因为我们希望使用 Oracle 和 Postgres 实例,因此我们可以将此 ORM 作为抽象层。在使用 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;