Используйте географическую точку PostGIS с пространственной спиной 5 в весенней загрузке - PullRequest
0 голосов
/ 13 сентября 2018

Как и в Hibernate 5, поддерживается тип географии.Я много искал, но не нашел ничего, связанного с географическими точками.

Я хочу сделать следующее:

  1. Сохранить точки Long / Latв таблице базы данных, например, ST_GeomFromText('POINT(6.463471 52.484832)', 4326)

  2. Выполнить очереди, чтобы проверить, находится ли точка в прямоугольнике Long / Lat, например:

    WHERE point && ST_MakeEnvelope (5.440433, 39.480434, 8.464680, 55.486190, 4326)

Я использую PostgreSQL и PostGIS .

Я просто не могу найти, какой тип аннотации столбца для спящего режима мне нужно использовать дляполучить Long / Lat Points, а также как выполнить вышеуказанный запрос.

@Type(type="org.hibernate.spatial.GeometryType")

Не относится к Long / Lat

Есть ли какие-либо документы по этому поводу (примечание: не точки геометрии).

1 Ответ

0 голосов
/ 13 сентября 2018

Да, Hibernate 5 поддерживает Spatial.

Вам нужно добавить зависимость

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-spatial</artifactId>
    <version>5.2.17.Final</version><!-- In my case was this version, needs to match with your hibernate core version-->
</dependency>

Затем вам нужно использовать правильный диалект в зависимости от вашей версии PostgreSQL.

Список их:

org.hibernate.spatial.dialect.postgis.PostgisPG9Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG82Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG91Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG92Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG93Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG94Dialect
org.hibernate.spatial.dialect.postgis.PostgisPG95Dialect

После установки правильного диалекта вы можете использовать Point или Polygon (нет необходимости использовать @Type) в ваших сущностях.Они приходят в пакете com.vividsolutions.jts.geom

Создание точки:

GeometryFactory gf = new GeometryFactory();
Point point = gf.createPoint(new Coordinate(lat, lon));
...