对我来说,数据按预期存储在 PostgreSQL 中,但是使用 REST API 检索它失败并出现反序列化错误。这就是 PostgreSQL 12 和 Spring Boot 对我有用的。
将其包含在 application.properties 文件中
spring.jpa.database-platform=org.hibernate.spatial.dialect.postgis.PostgisDialect
pom.xml 更改
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.20.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.4.20.Final</version>
</dependency>
<dependency>
<groupId>org.n52.jackson</groupId>
<artifactId>jackson-datatype-jts</artifactId>
<version>1.2.9</version>
</dependency>
使用 @Configuration 注解创建下面的 Bean
import org.n52.jackson.datatype.jts.JtsModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
@Bean
public JtsModule jtsModule() {
return new JtsModule();
}
}
在你的 @Entity 类中,确保
import org.n52.jackson.datatype.jts.GeometryDeserializer;
import org.n52.jackson.datatype.jts.GeometrySerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.locationtech.jts.geom.Point;
@Column(name="the_geom", columnDefinition = "POINT")
@JsonSerialize(using = GeometrySerializer.class)
@JsonDeserialize(contentUsing = GeometryDeserializer.class)
private Point point;
在这些更改之后,我的 Rest API 以预期的格式返回数据
"point": {
"type": "Point",
"coordinates": [
53.85151,
-1.55973
]
}