使用 Spring 靴jpa将经度和纬度存储为Postgres中的Point作为几何位置。

应用下面的代码后,它将引发:列“location”的类型为point,但表达式的类型为bytea。

另外,在获取数据时也会引发:
无法反序列化;嵌套的异常是org.hibernate.type.SerializationException:无法反序列化

在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)格式。

最佳答案

在Postgresql中添加postgis的扩展名。根据以下查询在特定架构中添加扩展。

CREATE EXTENSION postgis;

并使用space.dialect.postgis.PostgisDialect更改休眠方言

关于postgresql - 如何使用Spring Boot JPA在Postgres中存储Geometry Point?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55810133/

10-13 07:45