我在用於數據庫持久性的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;