gpt4 book ai didi

spring - PostGIS几何保存: "Invalid endian flag value encountered."

转载 作者:行者123 更新时间:2023-12-02 16:54:18 33 4
gpt4 key购买 nike

我有一个 Spring Roo + Hibernate 项目,它从客户端应用程序获取 JTS 众所周知的文本 (WKT) 字符串输入,将其转换为 JTS 几何对象,然后尝试将其写入 PostGIS 数据库。我在 the JDBC connection and types 方面遇到了一些问题,但这些似乎已经解决:

@Column(columnDefinition = "Geometry", nullable = true) 
private Geometry centerPoint;

转换确实:

Geometry geom = new WKTReader(new GeometryFactory(new PrecisionModel(), 4326)).read(source);

但是现在当 Hibernate 尝试将我的 Geometry 对象写入数据库时​​,我收到错误:

2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - Batch entry 0 insert into land_use (center_point, version, id) values ('<stream of 1152 bytes>', '0', '1') was aborted.  Call getNextException to see the cause.
2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: Invalid endian flag value encountered.

很明显,该错误与二进制表示有关,它可能是作为众所周知的二进制文件 (WKB) 生成的,其中包含一些 endianness 。然而,由于 Hibernate 隐藏了所有持久性,我无法真正判断事情的发展方向。

我已经和这个几何问题斗争了好几天了,关于这些错误的信息很少,所以有人有什么好主意吗?我可以在某处指定字节序(Hibernate 或 PostGIS),或者以不同的格式存储(WKT)吗?

编辑:我还应该提到,我正在使用最新的一切,通常看起来是兼容的:

  • Spring 3.1.1、Roo 1.2.1
  • hibernate 3.6.9
  • hibernate 空间 4.0-M1
  • jts 1.12
  • PostgreSQL 9.1
  • postgis-jdbc 1.5.3(不是最新的,而是 recommended for hibernate-spatial,从源代码编译的)
  • postgis-jdbc 2.0.1(现在刚刚尝试此以匹配随 PostgreSQL 安装的版本,同样的问题)

Hibernate Spatial 4 tutorial建议我将属性注释做为:

@Type(type="org.hibernate.spatial.GeometryType")
private Geometry centerPoint;

...但是当我这样做时,我得到 this other error ,当前注释解析。

最佳答案

我解决了这个问题,添加到“application.properties”这一行:

spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect

关于spring - PostGIS几何保存: "Invalid endian flag value encountered.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215212/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com