当前位置: 首页 > 知识库问答 >
问题:

获取org.postgresql.geometric。PGpoint而不是org.postgis。Hibernate Spatial中的PGgeometry

从建明
2023-03-14

我已经为此挣扎了一段时间。在Tomcat 7.0.47上运行

相关实体类片段:

@Column(name = "geopoint", columnDefinition = "org.postgis.Geometry")
@Type(type = "org.hibernate.spatial.GeometryType")
private com.vividsolutions.jts.geom.Point geopoint;

以下是我正在使用的库:

Hibernate Spatial 4.0-M1
postgis-jdbc 2.1.0SVN (used 1.5.3 before, same issue.)
Hibernate 4.2.7

数据源信息

Datasource = org.apache.tomcat.jdbc.pool.DataSource
Driver Class Name = org.postgis.DriverWrapper
JDBC URL Beginning = jdbc:postgresql_postGIS:

DB是安装了PostGIS的Amazon RDS上的PostgreSql 9.3。列geopoint类型为“point”。我使用PgAdminIII创建了这个表

Hibernate会话工厂道具

 <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
 <prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</prop>
 <prop key="hibernate.showsql">true</prop>

我已经调试了代码,看到JDBC似乎正在返回PGPoint。PGGeometryValueExtractor.toJTS(对象)收到一个PGPoint。似乎Hibernate Sspace al打算将其作为org.postgis.Geometry或org.postgis.PGGeometry对象。

任何帮助都将不胜感激。

共有1个答案

松霖
2023-03-14

< code>point是内置的PostgreSQL核心类型,而不是PostGIS类型。

如果要使用PostGIS,我认为您希望列类型为< code>geometry。请尝试更改列类型;如果您随后在其中存储PostGIS点,它应该会像预期的那样运行。

 类似资料:
  • 问题内容: 我正在尝试了解Windows 8上Python 2.7.6的异常。 这是我正在测试的代码,旨在在处创建一个新目录。如果目录已经存在,我想删除整个目录及其内容,然后创建一个新目录。 问题是,永远不会抛出异常。如果该目录尚不存在,则代码可以正常运行,但是如果该目录确实存在,则出现错误: WindowsError:[错误183]该文件已存在时无法创建该文件:“ My_New_Dir” 但是根

  • 问题内容: 我尝试过将文本与utf8相互转换,这似乎没有帮助。 我越来越: 它应该是: 我从此网址获取此数据。 问题答案: 转换为HTML实体: 有关更多编码选项,请参阅mb_convert_encoding的文档。

  • 问题内容: 我的桌子如下 输出表如下 我的查询就像: 我无法编写查询;我将如何获得最小列名而不是最小值?我将如何完成田野? 问题答案: 您可以使用一个表达式来做到这一点:

  • 所以我做了这个代码,它是工作的,但位置只能得到检索,如果我打开谷歌地图之前启动应用程序,我想做的是让应用程序检测我的当前位置,而不是最后已知的位置。我发现有一个名为getCurrentLocation()的方法可以用来检索我的位置,但我不知道在参数中放什么。请帮帮我.这是我的密码 private void getLocation(){

  • 问题内容: 我想将预览层“流式传输”到我的服务器,但是,我只希望发送特定的帧。基本上,我想拍摄AVCaptureVideoPreviewLayer的快照,将其缩放到28 * 28,将其转换为强度数组,然后将其发送到我的python后端处理其余部分的套接字层。 这里的问题是AVCapturePhotoOutput的捕获功能异常缓慢。我不能重复调用该函数。更不用说它总是使相机的快门声哈哈。 另一个问题

  • 问题内容: 我有以下代码 当我使用没有权限的用户时,我得到的不是。 问题答案: 是一个已检查的异常,但它是从未在其子句中声明的方法抛出的(实际上是从拦截该方法的方面)。这是Java中的异常情况,因此您的异常用包裹了,并且未经检查。 要按原样获取您的异常,您可以在方面所拦截的方法的子句中声明它,也可以使用另一个未经检查的异常(即的子类)代替。