hibernate 混合了vividsolutions.jts Geometry 和locationtech.jts.Geometry

Posted

技术标签:

【中文标题】hibernate 混合了vividsolutions.jts Geometry 和locationtech.jts.Geometry【英文标题】:hibernate mixes vividsolutions.jts Geometry with locationtech.jts.Geometry 【发布时间】:2020-06-11 11:54:50 【问题描述】:

在我的 JPA 实体中,我有以下内容:

import org.locationtech.jts.geom.Geometry;
....
....
@Column(name = "geometry")
    private Geometry geometry;

我正在使用 h2 gis 进行单元测试。当测试执行时,它会给出错误:

Caused by: org.h2.jdbc.JdbcSQLException: Feature not supported: "converting to class com.vividsolutions.jts.geom.Geometry"

为什么它试图映射到不同的类。

我的部门是:

<dependency>
            <groupId>org.locationtech.jts</groupId>
            <artifactId>jts</artifactId>
            <version>1.15.0</version>
            <type>pom</type>
        </dependency>
<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
            <scope>test</scope>
        </dependency>
<dependency>
            <groupId>org.orbisgis</groupId>
            <artifactId>h2gis</artifactId>
            <version>1.4.0</version>
            <scope>test</scope>
</dependency>

【问题讨论】:

【参考方案1】:

您不能使用不兼容的 H2、H2GIS 和 JTS 版本。

H2GIS 1.4.0 需要来自 Vivid Solutions 的 H2 1.4.196 和 JTS 1.14。

H2GIS 1.5.0 需要 LocationTech 的 H2 1.4.197 和 JTS 1.15。

如果你想使用更新版本的 H2,你需要使用一些快照版本的 H2GIS。

http://www.h2gis.org/news/releases/

【讨论】:

我尝试了第二种组合。它给了我错误:java.lang.NoClassDefFoundError: org/locationtech/jts/geom/CoordinateXYZM 这意味着你的类路径中的某些东西需要 JTS 1.16。

以上是关于hibernate 混合了vividsolutions.jts Geometry 和locationtech.jts.Geometry的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate:“实体中的重复列映射”与“不允许在属性中混合可更新和不可更新的列”

求助,Windows 2008如何配置睡眠(Sleep)、休眠(hibernate)、混合休眠(Hybird Sleep)、标准睡眠(Standby)

Spring JDBC-混合框架的事务管理

使用SpringDataJpa和Hibernate / eclipselink时entityManager的行为

hibernate 错误 could not determine type for

arcolinux挂起休眠混合睡眠区别