他の多くの列の中で空間列を含む PostgreSQL テーブルがありますpoint
。この空間列は、コンテンツを geoJson-Format で提供する必要があります。
通常の SQL は次のようになります。
select column1, column2, column3, ST_AsGeoJSON(point) from table;
そして書き戻し:
update table set column1 = 'abc', column2 = 'def', column3 = 'ghi',
point = ST_GeomFromGeoJSON('{ ... geojson ... }')
where id = ??;
hibernate-spatial と呼ばれる hibernate の拡張機能があることは知っています。ただし、この拡張機能は、geoJson を読み取ることはできますが、geoJson を解析して PostgreSQL に書き戻すことはできない postgis 1.5 用です。もう 1 つの欠点: 空間操作 (変換など) は、データベース側ではなくサーバー側で行われます。
次のようなクエリにSQL関数を挿入する可能性はありますか?
EntityManager em = emFactory.createEntityManager();
myModel selected = em.find(myModel.class, 1);
myModel では、ジオメトリに使用される列はString
、geoJson を表す String または継承された型である必要があります。
Hibernate Dialects を見つけましたが、HQL (または JPL) でしか動作しないようです。この geojson を透過的に使用したいと思います。HQL と組み合わせて使用するのではなく (SQL をコードで記述する必要がありましたが、これは望ましくありません)。
setCustomWrite
使用してsetCustomReadすることも可能ですが、それらの使用方法の例は見つかりませんでした。
タイプをpostgis-geometryに残したい理由の答えを防ぐために-データベース側の他の空間関連操作のため、このタイプに残す必要があります。