2

我不确定这在 Hibernate 中是否可行,但如果可以的话,那就太好了 :) 我实际上并没有通过这个概念阶段,但我会尽我所能解释。

我想利用 Oracle Spatial 功能进行基于邻近的搜索。想象一下,我有一个存储纬度/经度值的 Location 实体。然后想象一下,我想查询用户指定的纬度/经度位置 5 公里内的所有位置。在结果中,我想查看所有匹配的 Locations,但除了 Location 实体上的标准映射字段之外,我还想显示每个 Location 相对于用户指定位置的距离。

Oracle Spatial 允许我将其作为 SQL 中的计算字段执行,但我不明白 Hibernate 如何支持从数据库返回的计算字段。由于计算字段不是表中的列,我无法进行标准映射。

是否有一些特殊功能允许我为 POJO 创建包装器并将 Hibernate 映射到它们以便可以返回额外的计算属性?

4

2 回答 2

2

我发现,使用 JPA 注释,我可以简单地在映射对象上创建一个与计算的 sql 字段同名的属性(例如“距离”)并将其注释为:

@Column(insertable=false, updatable=false)
private Double distance;

当您尝试从数据库中保存回来时,这应该映射属性并且不会引发错误。

请注意,正确的注释是可更新的(不能像最初发布的那样更新)

于 2011-11-09T07:24:41.950 回答
1

您看过Hibernate Spatial及其Oracle10g/11g Provider吗?

Hibernate Spatial 是 Hibernate 的通用扩展,用于处理地理数据。Hibernate Spatial 是开源的,并且与 Hibernate 一样,在 LGPL 许可下获得许可。

Hibernate Spatial 允许您以标准化的方式处理地理数据。它从您的数据库支持地理数据的特定方式中抽象出来,并为地理数据存储和查询功能提供标准化的跨数据库接口。

Hibernate Spatial 支持 OGC 简单特征规范的大部分功能。支持的数据库有:Oracle 10g/11g、Postgresql/Postgis 和 MySQL。

于 2009-10-20T14:00:24.473 回答