stackoverflow の読者の皆様へ
現在、座標に基づいて特定のアイテムをロードする必要があるアプリケーションに取り組んでいます。例: 座標 x またはその 15 km 以内にあるすべてのショップが必要です。
私はこの Web アプリケーションを Java EE 6 で構築しており、Postgres データベースへのデータ永続化のために Hibernate 3.3 を使用しました。いくつかの調査の後、Hibernate-Spatial が私の目標を達成する可能性があることを発見しました。Postgis をインストールし、Hibernate-Spatial を実行しています。
私は Hibernate 3.3、Hibernate-Spatial 1.0、PostgreSQL 9.2、および postgis-jdbc 1.3.3 を使用しています。
場所フィールドを持つエンティティを作成しました:
@Column(columnDefinition = "Geometry", nullable = true)
@Type(type = "org.hibernatespatial.GeometryUserType")
private Point location;
最初は、円を作成し、基本的に円内にあるすべての点を照会できると考えていました。でもこれが思ったより難しそうです。Hibernate-Spatial を使用するという間違った選択をしたと思い始めているほど難しいです。
私の質問は、Hibernate-Spatial を使用して特定の境界内のすべてのポイントを照会することが可能かどうかです (座標 x と y はそこから km です)。
私の要件を解決する他の可能性にも興味があります。以下の可能性を考えてみました。
- PostgreSQL でネイティブ クエリを使用し、それらの結果をエンティティにマップして、アプリケーションの他の部分で使用します (基本的に Hibernate-Spatial を削除し、ネイティブ クエリを使用します)。
- Hibernate-Search に切り替え、Lucene を使用してタスクを実行します。
- まったく別のもの
Hibernate-Spatial で自分の希望を達成する方法、または別の方法で要件を達成する方法の例を教えてください。