如何使用 Spring Boot JPA 在 Postgres 中存储几何点?
Posted
技术标签:
【中文标题】如何使用 Spring Boot JPA 在 Postgres 中存储几何点?【英文标题】:How to store Geometry Point in Postgres using spring boot JPA? 【发布时间】:2019-09-12 13:48:06 【问题描述】:使用 spring boot jpa 将经度和纬度存储为 Postgres 中的点作为几何位置。
应用下面的代码后,它会抛出:列“位置”是点类型,但表达式是字节类型。
在获取数据时也会抛出: 无法反序列化;嵌套异常是 org.hibernate.type.SerializationException: could not deserialize
在 pom.xml 中添加依赖
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.4.1.Final</version>
</dependency>
在实体类中添加列。
@Column(columnDefinition = "POINT")
private Point location;
用于将数据存储到数据库中
GeometryFactory geometryFactory = new GeometryFactory();
Coordinate coordinate = new Coordinate();
coordinate.x = 2;
coordinate.y = 5;
Point myPoint = geometryFactory.createPoint(coordinate);
user.setLocation(myPoint);
我需要在 Postgres 中以 (30.5,53.123) 格式存储数据。
【问题讨论】:
【参考方案1】:在 Postgresql 中添加 postgis 的扩展。根据以下查询在特定架构中添加扩展。
CREATE EXTENSION postgis;
并使用 spatial.dialect.postgis.PostgisDialect 更改休眠方言
【讨论】:
以上是关于如何使用 Spring Boot JPA 在 Postgres 中存储几何点?的主要内容,如果未能解决你的问题,请参考以下文章
spring boot:实现jpa+thymeleaf 用户管理
spring boot:实现jpa+thymeleaf 用户管理
spring boot:实现jpa+thymeleaf 用户管理
如何在 Spring Boot JPA 中使用多个 json 数组?