Я создаю проект, который использует некоторые пространственные запросы.
Я использую Spring boot с репозиториями данных Spring и PostgreSQL с расширением PostGIS в качестве базы данных.
Я создал этот репозиторий:
import com.vividsolutions.jts.geom.Geometry;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface AreaRepository extends CrudRepository<Area, Long> {
/*
extra queries for Area here
*/
@Query(value="select st_intersection(" +
":base_layer ," +
":filter_layer" +
")", nativeQuery = true)
Geometry geometryIntersectGeometry(@Param("base_layer") Geometry baseGeometry,@Param("filter_layer") Geometry filterGeometry);
}
Содержит несколько запросов для объекта Area. Я также хочу использовать некоторые функции PostGIS для выполнения некоторых вычислений, поэтому я создал geometryIntersectGeometry для вызова функции st_intersection из PostGis, которая должна вернуть геометрию.
Я установил спящий диалект на PostGIS в настройках:
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/test_db
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.postgis.PostgisDialect
И у меня есть зависимости для спящего пространства:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>${hibernate.version}</version>
</dependency>
...
Вызов функции geometryIntersectGeometry приводит к ошибке:
No Dialect mapping for JDBC type: 1111; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111,{}
Как мне указать JPA / Spring Data для сопоставления ответа геометрии (типа PostGIS) с объектом Geometry (com.vividsolutions.jts.geom.Geometry)?