-1

我正在将 Spring Boot 用于我正在使用空间数据的项目。对于空间数据,我使用的是 Hibernate Spatial。这是我的实体的配置:

@Column(name="LOCATION",columnDefinition="geometry(Point,4326)")
private Point location;

在哪里Point上课com.vividsolutions.jts.geom.Point。这还包括一个 getter 和 setter。

当用法线检索这个实体时,repository.findOne("id")这也包括我的结果中的位置,映射到一个点。但是,稍后我需要在系统中添加一些动态查询系统。因此,我还使用继承自的类查询数据org.springframework.data.jpa.domain.Specification。使用此规范时,位置始终为null. SQL 调试信息显示该位置是从数据库中检索到的,但由于某种原因,它没有映射到我的实体对象。

我的 spring-boot 版本是 1.4.0.RELEASE。数据来自mysql数据库。

任何使用 a 检索几何数据的帮助Specification将不胜感激。

4

1 回答 1

0

我对 Mysql Spatial 进行了相同的测试,并通过使用 Specifications 应用查询来检索数据。我可以检索空间数据。

以下是您可以尝试的几个指针。

  1. 确保您已设置支持空间查询和类型的方言。

    spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect

  2. 无需定义列定义。

消除columnDefinition="geometry(Point,4326)

于 2017-01-13T16:21:52.503 回答