我使用jdbc將ormlite連接到postgresql數據庫。我的數據結構是預定義的,並且包含一個名爲geometry的Postgis數據類型。該數據類型可以包含GIS應用程序的不同幾何結構(點,線串,多邊形等)。 Natively Postgis可以將此數據類型轉換爲geoJson或任何其他字符串格式相關的格式。使用PostGIS與ormLite
當我直接使用帶Postgis的ormLite(作爲字符串)時,它給了我一個二進制格式。所以我想使用postgis函數將這種二進制格式轉換爲geoJson,KML。
在SQL它看起來像這樣:
select ST_AsGeoJson(geometrycolumn) from table;
或
update table set geometrycolumn = ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-5.5,7.2]}')
在這種幾何列應該訪問的模式(讀/寫)爲一個字符串。
我試圖使用ormlite persisters但這已經太晚了。目前,使用persister(通過resultToSqlArg
或parseDefaultString
),查詢被髮送到數據庫,我無法編輯從postgres請求的列。 Mrog有一個solution與此有關的問題,但也使用persisters。
我也嘗試用jdbc覆蓋特定的類。但不知道如何「注入」sql函數。
或者我可以使用原始SQL查詢。但是我需要使用的表中還有很多其他屬性。我必須使用兩個查詢到數據庫(一次是常規屬性,一次是幾何列)。而我的感覺不是使用原生的sql語句。
另一種解決方案是在數據庫端創建一個geoJson列。 ormLite可以從中讀取,並使用sql-trigger寫入原始列。但那是一個糟糕的解決方案。
我真的必須創建自定義數據類型並在服務器端進行轉換,而不是在數據庫上進行轉換嗎?還是有解決方案來使用本地數據庫功能?