3

我正在将现有应用程序从 Hibernate 3.6.10.Final(带有 hibernate-spatial 1.1.1)迁移到Hibernate 5 ORM,它应该包括空间功能。因此,我删除了org.hibernatespatialpom.xml 中的引用并升级 3.6.10.Final 以便我拥有:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.0.4.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.0.4.Final</version>
</dependency>

在我使用空间标准创建查询之前,我会遇到编译错误,就好像它找不到某些类一样。例如,在我有类似的东西之前:

import org.hibernatespatial.criterion.SpatialRelateExpression;
import org.hibernatespatial.criterion.SpatialRestrictions;

SpatialRelateExpression geomExpression = SpatialRestrictions.within("geom", area);
criteria.add(geomExpression);

Eclipse 将提出“SpatialRelateExpression 无法解决”(对于SpatialRestrictions. 即使我认为将导入更改为这些就足够了:

import org.hibernate.spatial.criterion.SpatialRelateExpression;
import org.hibernate.spatial.criterion.SpatialRestrictions;

Eclipse 会再次抱怨“无法解析导入 org.hibernate.spatial”。当我打开hibernate-core-5.0.4.Final.jarhibernate-entity-manager-5.0.4.Final.jar库时,我找不到org.hibernate.spatial包,但根据Hibernate 5关于那些空间相关类的文档,我希望它们在那里。

我为此尝试了谷歌,但可能是因为 Hibernate 5 已经很久没有上市了,所以我不断得到对 Hibernate 4 的引用。

我的问题是:

  • 我是否需要更改 pom.xml 和 Maven 依赖项中的任何内容才能使用空间功能?我希望它们能够完全集成到 Hibernate 主库中。
  • 为了使用 Hibernate 5,我应该对我的空间查询条件进行任何重大更改吗?我找不到很好的例子。
4

1 回答 1

2

您缺少hibernate-spatial依赖项。它不会作为传递依赖从hibernate-entitymanager.

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-spatial</artifactId>
  <version>5.0.4.Final</version>
</dependency>

您链接到的文档是所有 Hibernate 模块组合的文档,而不仅仅是核心。

于 2015-11-27T17:10:02.910 回答