亲爱的stackoverflow读者,
我目前正在开发一个需要根据其坐标加载特定项目的应用程序。示例:我想要坐标 x 或其 15 公里范围内的所有商店。
我一直在 Java EE 6 中构建这个 Web 应用程序,并使用 Hibernate 3.3 将数据持久化到我的 Postgres 数据库。经过一番研究,我发现 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;
最初我以为我可以创建一个 Circle 并基本上查询位于圆圈中的每个点。但这似乎比我想象的要难。太难了,我开始认为我在使用 Hibernate-Spatial 时做出了错误的选择。
我的问题是,是否可以通过使用 Hibernate-Spatial 来查询特定边界内的每个点(坐标 x 和 y km 从那里开始)。
我也对解决我的要求的其他可能性感兴趣。我一直在考虑以下几种可能性:
- 只需在 PostgreSQL 上使用本机查询,将这些结果映射到实体并在应用程序的其他部分使用这些结果(基本上删除 Hibernate-Spatial 并使用本机查询)。
- 切换到 Hibernate-Search 并使用 Lucene 来完成我的任务。
- 完全不同的东西
谁能提供一个例子,说明我如何在 Hibernate-Spatial 中实现我的愿望,或者我如何以另一种方式实现我的要求。