Hibernate 5 ORM 的空间谓词
Spatial predicates with Hibernate 5 ORM
我正在将现有应用程序从 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 cannot be resolved"(与 SpatialRestrictions
相同)。尽管我认为将导入更改为这些就足够了 :
import org.hibernate.spatial.criterion.SpatialRelateExpression;
import org.hibernate.spatial.criterion.SpatialRestrictions;
Eclipse 将再次抱怨 "The import org.hibernate.spatial cannot be resolved"。当我打开 hibernate-core-5.0.4.Final.jar
和 hibernate-entity-manager-5.0.4.Final.jar
库时,我找不到 org.hibernate.spatial
包,但是根据 Hibernate 5 documentation 关于那些与空间相关的 类 我期望他们在那里。
为此,我尝试 Google,但也许是因为 Hibernate 5 已经很长时间没有上市了,我不断地得到对 Hibernate 4 的引用。
我的问题是:
- 我是否需要更改我的 pom.xml 和 Maven 依赖项中的任何内容才能使空间功能可用?我希望它们能够完全集成到 Hibernate 主库中。
- 为了使用 Hibernate 5,我是否应该对我的空间查询条件进行任何实质性更改?我找不到很好的例子。
您缺少 hibernate-spatial
依赖项。它没有作为传递依赖从 hibernate-entitymanager
.
中拉出
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.0.4.Final</version>
</dependency>
您链接到的文档是所有 Hibernate 模块组合的文档,而不仅仅是核心。
我正在将现有应用程序从 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 cannot be resolved"(与 SpatialRestrictions
相同)。尽管我认为将导入更改为这些就足够了 :
import org.hibernate.spatial.criterion.SpatialRelateExpression;
import org.hibernate.spatial.criterion.SpatialRestrictions;
Eclipse 将再次抱怨 "The import org.hibernate.spatial cannot be resolved"。当我打开 hibernate-core-5.0.4.Final.jar
和 hibernate-entity-manager-5.0.4.Final.jar
库时,我找不到 org.hibernate.spatial
包,但是根据 Hibernate 5 documentation 关于那些与空间相关的 类 我期望他们在那里。
为此,我尝试 Google,但也许是因为 Hibernate 5 已经很长时间没有上市了,我不断地得到对 Hibernate 4 的引用。
我的问题是:
- 我是否需要更改我的 pom.xml 和 Maven 依赖项中的任何内容才能使空间功能可用?我希望它们能够完全集成到 Hibernate 主库中。
- 为了使用 Hibernate 5,我是否应该对我的空间查询条件进行任何实质性更改?我找不到很好的例子。
您缺少 hibernate-spatial
依赖项。它没有作为传递依赖从 hibernate-entitymanager
.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.0.4.Final</version>
</dependency>
您链接到的文档是所有 Hibernate 模块组合的文档,而不仅仅是核心。