错误:Hibernate 6 和 Spring Boot 3 遇到无效的 endian 标志值

Error: Invalid endian flag value encountered with Hibernate 6 and Spring Boot 3

提问人:Eric Murphy 提问时间:9/20/2022 最后编辑:Eric Murphy 更新时间:10/2/2022 访问量:411

问:

我在使用 PostGIS 和 Spring Boot 3.0 的 Hibernate Spatial 6 时遇到了一些问题。这个项目我已经拍摄并升级到 SB 3.0 快照:https://github.com/murphye/spring-boot-postgis/tree/3.0

当我尝试运行查询时,我收到此错误:

Caused by: org.postgresql.util.PSQLException: ERROR: Invalid endian flag value encountered.

我正在设置方言,但据说使用 Hibernate 6,这应该不再是必要的:

database-platform: org.hibernate.spatial.dialect.postgis.PostgisPG10Dialect

以下是导致问题的列:

    @Column(columnDefinition = "geometry(Point,4326)")
    private Point geom;

和查询:

@Query(value="SELECT * from us_cities where ST_DistanceSphere(geom, :p) < :distanceM", nativeQuery = true)

关于问题可能是什么的任何想法?它在 Spring Boot 2.5 中工作。谢谢。

休眠 spring-data-jpa postgis 休眠空间

评论

0赞 M. Deinum 9/20/2022
您知道 Spring Boot 3.0 仍在开发中,尚未发布最终版本吗?我怀疑问题出在Spring Boot上,而是出在使用的Hibernate版本上。
0赞 Eric Murphy 9/20/2022
是的,但 3.0 有多个里程碑,并计划在 11 月正式发布。3.0 将使用 Hibernate 6,这是一个很大的变化,也可能是问题的根源,是的。但是,在这一点上,这应该有效。
0赞 Karel Maesen 9/21/2022
对于 Hibernate 6,您不需要使用空间方言。只需使用常规的 postgresql 方言就足够了,只要您将 hibernate-spatial jar 添加到类路径中即可。数据库的操作系统是什么?
0赞 Eric Murphy 9/28/2022
@KarelMaesen我确实玩过方言,只是使用 PostgreSQL 而没有任何效果。这是MacOS M1 CPU。
0赞 Karel Maesen 9/29/2022
从未在 MacOS M1 上测试过。您能否粘贴更多堆栈跟踪(尤其是有关 Hibernate Spatial 的部分),以便我更好地识别问题?(我是 Hibernate Spatial 的主要开发人员)。

答:

0赞 Eric Murphy 10/2/2022 #1

更新:我得到了这个工作。我不得不进行一些调整,但主要的变化是使用 locationtech 包而不是 vividsolutions。我相信 Hibernate 6 可能需要此更改。

我还必须使用与 locationtech 一起使用的 jackson-datatype-jts 分支。

我还能够注释掉一些 Hibernate 6 不再需要的 Spring Boot 配置(例如 database-platform)。

代码位于 3.0 分支上:https://github.com/murphye/spring-boot-postgis/tree/3.0