Hibernate 5 ORM

时间:2015-11-27 16:55:02

标签: hibernate maven hibernate-5.x hibernate-spatial

我正在将现有的应用程序从Hibernate 3.6.10.Final(使用hibernate-spatial 1.1.1)迁移到Hibernate 5 ORM,这应该包含空间功能。因此,我删除了pom.xml中org.hibernatespatial的引用并升级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 documentation关于那些与空间相关的类,我希望它们是。

我试图谷歌为此,但也许因为Hibernate 5已经在市场上这么长时间没有上市,我不断获得对Hibernate 4的引用。

我的问题是:

  • 我是否需要更改pom.xml和Maven依赖项中的任何内容才能获得空间功能?我希望它们完全集成在Hibernate主库中。
  • 我是否应该对空间查询条件进行任何实质性更改才能使用Hibernate 5?我找不到好的例子。

1 个答案:

答案 0 :(得分:2)

您缺少hibernate-spatial依赖项。它不是来自hibernate-entitymanager的传递依赖。

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

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