1

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、ティルマン

4

1 に答える 1