Как хранить Geometry Point в Postgres, используя пружинную загрузку JPA? - PullRequest
4 голосов
/ 23 апреля 2019

Для сохранения долготы и широты в качестве местоположения геометрии в виде точки в Postgres с использованием пружинной загрузки jpa.

После применения кода ниже он выдает: столбец "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);

Мне нужно хранить данные в формате (30.5,53.123) в Postgres.

1 Ответ

0 голосов
/ 30 апреля 2019

Чтобы добавить расширение postgis в Postgresql.Добавьте расширение в конкретной схеме в соответствии с приведенным ниже запросом.

CREATE EXTENSION postgis;

И измените спящий диалект с помощьюatial.dialect.postgis.PostgisDialect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...