问题标签 [hibernate-spatial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2905 浏览

java - 为什么在尝试将 Hibernate Spatial 用于 Spring Boot 项目时出现此错误?实例化异常

我正在尝试将Hibernate Spatial配置到我正在处理的Spring Boot项目中,但我发现了一些问题。

我正在使用MariaDB(所以它是MySql)和 Hibernate 之前已更正配置(我将它用于所有非 GIS 功能,没有任何问题)。

我开始使用本教程: http ://www.hibernatespatial.org/documentation/02-Tutorial/01-tutorial4/

但是我使用的是Hibernate 5而不是 Hibernate 4 (我可以在我的外部库中看到我有Hibernate 5.0.11)并且据我所知, Hibernate Spatial 本身就是Hibernate 5

所以,这是我的pom.xml内容:

因此,如您所见,我添加了此依赖项:

我认为我需要它的地理类型为Point(但我绝对不确定)。

然后我有这个映射表的实体类:

在这个类中,我添加了这个字段:

这应该映射数据库住宿表的字段,名称为geo_positionPoint作为数据类型。

在发布的示例中使用@Type(type="org.hibernate.spatial.GeometryType")代替GeolatteGeometryType但在我的org.hibernate.spatial.*包中我没有GeometryType但我可以找到这个GeolatteGeometryType类(我认为也许可能是 Hibernate 5 提供的较新的实现,但我不确定)。

当我启动我的应用程序时,我在堆栈跟踪中收到以下错误消息:

这也是我的application.properties配置文件:

问题是什么?我错过了什么?我该如何解决这个问题?

0 投票
5 回答
4188 浏览

spring - 为什么我不能将我的实体类的 Point 字段映射到数据库的 Point 字段上?“位置”列的类型是点,但表达式的类型是字节茶

我正在开发我的第一个Spring Boot + Spring Data JPA + Hibernate 5,在PostgreSQL数据库上工作。

我在尝试将具有的字段映射为数据类型时遇到以下问题(所以我使用的是Hibernate Spatial,它本机包含在 Hibernate 5.x 中。

所以我有以下情况:

我有以下名为 citys 的简单数据库表:

因此,例如,此表包含以下记录:

然后我有这个映射以前的城市数据库表的城市实体类:

我正在使用Point类的这个实现:com.vividsolutions.jts.geom.Point,因为我在一些教程中找到了它,但我不确定它是否正确,因为我也可以选择这些其他实现:

然后我有这个代表我的 DAO 类的Spring Data JPA接口:

如您所见,它扩展了 JpaRepository并且方法签名“实现”了我的查询(使用 JPA)。

因此,在我的 JUnit 测试类中,我实现了这个测试方法,我试图在数据库中的城市表中插入一条新记录:

所以我正在创建要持久化的对象(罗马城市),我设置了一个全新的Point对象,我试图通过这条线来持久化它:

问题是,当尝试执行save(rome)方法时,会抛出此异常:

所以基本上错误信息是:

因此,似乎试图在将点作为数据类型的表的位置字段中放入错误的内容。为什么不能将使用的com.vividsolutions.jts.geom.Point对象转换为实体类?

这是我的application.propertis文件,我的应用程序中唯一的配置文件:

如您所见,我已将spring.jpa.hibernate.naming-strategy设置为PostgisDialect方言以使用 Hibernate 空间。

什么是磨损?我错过了什么?我该如何解决这个问题?

0 投票
1 回答
799 浏览

java - JTS - Hibernate + Postgres + UUID 冲突

我正在使用 Hibernate 5.0 + Postgres 9.4

我的实体使用UUIDs 作为标识符。

该项目还使用hibernate-spatial.

id属性被简单地注释为

持久化任何实体(不仅是具有几何数据的实体)后,我收到以下错误:

看起来映射到我的类型有一些冲突;虽然我不是 Hibernate 类型映射的专家。

有没有人可以帮助我克服这个问题?

0 投票
1 回答
130 浏览

maven - Maven - 减少远程存储库访问所需的时间

我的项目使用 hibernate-spatial 包。以下是 pom.xml 文件中的条目

当我这样做时mvn clean install,maven 会尝试访问不再存在的远程存储库。以下是我在控制台日志中看到的消息。

下载:http: //www.hibernatespatial.org/repository/_project _related_info/maven-metadata.xml 2016 年 11 月 24 日上午 9:34:20 org.apache.maven.wagon.providers.http.httpclient.impl.execchain。 RetryExec 执行 INFO:处理对 {}-> http://www.hibernatespatial.org:80的请求时捕获 I/O 异常 (java.net.SocketException) :操作超时 2016 年 11 月 24 日上午 9:34:20 org .apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec 执行信息:重试请求到 {}-> http://www.hibernatespatial.org:80 Nov 24, 2016 9:35:23 AM org .apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec 执行 INFO:处理对 {}-> 的请求时捕获的 I/O 异常 (java.net.SocketException)http://www.hibernatespatial.org:80:操作超时 2016 年 11 月 24 日上午 9:35:23 org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec 执行信息:重试请求{}-> http://www.hibernatespatial.org:80 [警告] 无法将元数据 _project_related_info/maven-metadata.xml 从 Hibernate Spatial 存储库 ( http://www.hibernatespatial.org/repository ) 传输到/传输到其中:连接到 www.hibernatespatial.org:80 [www.hibernatespatial.org/62.213.201.148] 失败:操作超时

实际上,该软件包在我的~/.m2/repository文件夹中可用。因此,在多次超时后,maven 在本地存储库中查找,在那里找到并构建成功。如何减少远程存储库检查所花费的时间。

我尝试将以下内容放入我的~/.m2/settings.xml文件中,但没有帮助。

0 投票
1 回答
1878 浏览

java - 休眠空间 - 遇到无效的字节序标志值

我有一个带有 Hibernate 和 Hibernate Spatial 的 Spring Boot 项目。该应用程序的目标之一是查找当前用户周围区域中的所有匹配项。

然后我尝试使用以下存储库查找所有匹配项:

当我调用该方法时:

因此,当我尝试使用此代码访问数据时,出现以下错误:

因此,如果有人知道我如何解决此错误,我将不胜感激。谢谢你的帮助。

编辑 :

这是我的 application.properties 文件:

0 投票
1 回答
66 浏览

java - 休眠空间和遗留数据库

背景:

我有旧版数据库,我无法更改其架构。我的实体的映射如下所示:

问题:

我需要创建休眠查询,它将选择一个圆圈中的所有SomeObjects。我通过休眠空间应该是解决这个问题的正确工具。但是,我能找到的所有示例都声明了Point类型的列,而不是像我一样使用单独的列作为坐标。由于我无法更改数据库架构,因此这种方法对我不起作用。

那么,我可以使用休眠空间来解决这个问题吗?如果是,查询会是什么样子?

解决方案:

Karthik Prasad 清楚而正确地描述了什么是空间以及我一般有哪些选择。因为,我使用的是 Oracle DB,所以我还有一个选择:使用 sdo_geom 包。所以,最后我使用了 SQL 查询,而不是休眠查询/条件:

0 投票
1 回答
1535 浏览

java - Spring Java JPA:使用带有休眠空间的规范

我正在将 Spring Boot 用于我正在使用空间数据的项目。对于空间数据,我使用的是 Hibernate Spatial。这是我的实体的配置:

在哪里Point上课com.vividsolutions.jts.geom.Point。这还包括一个 getter 和 setter。

当用法线检索这个实体时,repository.findOne("id")这也包括我的结果中的位置,映射到一个点。但是,稍后我需要在系统中添加一些动态查询系统。因此,我还使用继承自的类查询数据org.springframework.data.jpa.domain.Specification。使用此规范时,位置始终为null. SQL 调试信息显示该位置是从数据库中检索到的,但由于某种原因,它没有映射到我的实体对象。

我的 spring-boot 版本是 1.4.0.RELEASE。数据来自mysql数据库。

任何使用 a 检索几何数据的帮助Specification将不胜感激。

0 投票
1 回答
5833 浏览

java - 休眠空间创建几何对象

我正在用 Java 开发一个带有 oracle 空间的位置应用程序。我正在使用休眠 4.0 空间作为 orm 层。我是空间新手,我找不到休眠空间的最佳实践。我的数据库模型如下;

插入语句如下;

实体模型跟随我只共享 sdo_geometry 对象;

如何用动态参数填充这个 spahe 对象。例如;

如何动态地将 sdo_gtype、sdo_srid、sdo_point_type 参数传递给几何对象?

0 投票
0 回答
149 浏览

java - 为什么我逆向工程时,Eclipse 中的 Hibernate 工具找不到 OracleSpatial10gDialect 类?

我在我的 pom 中添加了 hibernate-spatial 依赖项,我可以看到在我更新项目后下载了 jar。当我运行应用程序时,它使用空间方言可以正常工作,但是当我尝试在 Eclipse 中进行逆向工程时,它告诉我

我有一个项目,在休眠控制台配置中将休眠空间依赖项设置为项目。我可以在控制台配置类路径选项卡中看到该项目的 maven 依赖库,我可以在该项目属性的类路径选项卡中看到该库下列出的 hibernate-spatial jar。

我什至尝试将休眠空间 jar 作为外部 jar 添加到休眠控制台配置的类路径选项卡,但没有成功。

0 投票
1 回答
843 浏览

java - 休眠空间mysql 5.7

我正在尝试使用休眠空间。我做了以下配置......

hibernate.version 5.2.2.Final

MySQL 5.7

hibernate.dialect =[org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect]

但它给了我错误:-

org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [GeoLocation] in table [osamdb.customerlocations]; found [geometry (Types#BINARY)], but expecting [point (Types#ARRAY)]

我错过了什么??