2017-01-02 65 views
0

我正在使用Spring Boot作爲我正在使用空間數據的項目。對於我使用Hibernate Spatial的空間數據。這是我的實體的配置:Spring Java JPA:使用hibernate空間的規範

@Column(name="LOCATION",columnDefinition="geometry(Point,4326)") 
private Point location; 

哪裏Point是類com.vividsolutions.jts.geom.Point的。這還包括一個getter和setter。

當使用正常的repository.findOne("id")檢索此實體時,這還包括我的結果中映射到點的位置。但是,我需要在系統中稍後提供一些動態查詢系統。因此,我也使用繼承自org.springframework.data.jpa.domain.Specification的類來查詢數據。使用此規格時,位置始終爲null。 SQL調試信息顯示我從數據庫中檢索位置,但由於某種原因,這沒有映射到我的實體對象。

我的彈簧引導版本是1.4.0.RELEASE。數據來自mysql數據庫。

任何幫助檢索使用Specification幾何數據將不勝感激。

回答

0

我使用Mysql Spatial測試了它,並通過使用規範應用查詢來檢索數據。我可以檢索空間數據。

以下是您可以嘗試的幾個指針。

  1. 確保您已經設置了支持空間查詢和類型的方言。

    spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect

  2. 不需要定義列定義。

刪除columnDefinition="geometry(Point,4326)

+0

謝謝您的回答。不幸的是,這並沒有幫助。我認爲問題在於org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor。在我生成的模型中沒有看到任何幾何類型的屬性。我在插件定義中忘記了什麼嗎?我正在使用maven。 – Cerebres

+0

當我將點的定義更改爲幾何時,它將被添加到元模型中,但值保持爲空。 – Cerebres

+0

@Cerebres BTW使用哪種版本的spring-boot和hibernate。我測試了spring-boot 2.0.0快照和休眠5.2.5 –