PostGIS の上に実装される空間アプリケーションのスキーマを作成するために、(空間) 休止状態の注釈を使用しています。注釈付きクラスからデータベース スキーマを作成するとき、アプリケーション全体で使用される空間クエリを高速化するために、空間インデックスを作成する必要があります。
@Entity
@Table(name = "MY_CLASS")
@org.hibernate.annotations.Table(
appliesTo = "MY_CLASS", indexes = {
@Index(name = "idx_my_class_sidx",
columnNames = { "GEOM" }) })
public class MyClass {
[...]
@Column(name = "GEOM")
@Type(type = "org.hibernate.spatial.GeometryType")
private LineString geom;
[...]
}
エクスポートされたスキーマにはインデックスが含まれていますが、残念ながら望ましくないインデックス メソッドで作成されています。hibernate はデフォルトのようですがbtree
、PostGIS はGIST
空間データを扱うときにインデックスの使用を推奨しています ( http://postgis.net/docs/manual-2.0/using_postgis_dbmanagement.html#id441511を参照)。
CREATE INDEX idx_my_class_sidx
ON my_class
USING btree
(geom);
単純な SQL を使用してインデックスを作成する方法にフォールバックするかもしれませんが、休止状態の注釈を使用して PostgreSQL のデフォルトのメソッド タイプをオーバーライドする方法があるかどうか疑問に思っています。解決策やそれを行う方法のアイデアさえも高く評価されます。
TIA、ティルマン