PostGIS 迁移到 Hibernate 6

问题描述 投票:0回答:1

我正在尝试迁移到 Spring Boot 3(和 hibernate-spatial:6.4.1.Final) 因此,在迁移之前,我的 @Entity 中有以下几行描述存储 MultiLineString 几何图形的表中的列:

@Column(name = "multilinestring")
@Type(value = "org.locationtech.jts.geom.MultiLineString")
private MultiLineString multiLineString;

天真地,我将@Type转换为

@Type(org.locationtech.jts.geom.MultiLineString.class)
,但这会产生错误,因为MultiLineString不扩展UserType(不兼容的类型:类无法转换为Class>

那么在这种情况下我应该使用哪个类?还是我做错了什么?

摘自我的 gradle 文件,以防万一这很重要:

plugins {
    id 'org.springframework.boot' version '3.2.1'
    id 'io.spring.dependency-management' version '1.1.4'
    id 'java'
}
repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-rest'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.hibernate.orm:hibernate-spatial:6.4.1.Final'
    implementation 'net.postgis:postgis-jdbc:2023.1.0'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
    
    ....
}
hibernate spring-data-jpa postgis hibernate-spatial spring-boot-3
1个回答
0
投票

好吧,答案出乎意料地简单: 只需删除@Type注释即可:

@Column(name = "multilinestring")
private MultiLineString multiLineString;

升级到 hibernate 6 后(并确保在 build.gradle 文件中包含

implementation 'org.hibernate.orm:hibernate-spatial'
),JPA 会自动正确识别 MultiLineString,因此不再需要 @Type 注释。

© www.soinside.com 2019 - 2024. All rights reserved.