【问题标题】:How does a R2DBC repository work with Postgis geometries?R2DBC 存储库如何与 Postgis 几何图形一起使用?
【发布时间】:2020-09-29 10:22:16
【问题描述】:

我有几个与 Spring Data JPA 一起使用的实体类。 (这些实体类位于安装了 postgis 并包含几何字段的 postgres 数据库中。)

但是,当我切换到 r2dbc 时,它不起作用。任何指针将不胜感激。

错误原因:java.lang.IllegalStateException:找不到类 org.locationtech.jts.geom.Geometry 所需的标识符属性!

@Entity
public class Place {
    @Id
    public int id;
    @Column(columnDefinition="Geometry")
    @Type(type="org.hibernate.spatial.GeometryType")    
    public com.vividsolutions.jts.geom.Point coordinates;
}

【问题讨论】:

  • 你必须使用docs.spring.io/spring-data/r2dbc/docs/1.0.x/reference/html/…中提到的自定义映射器
  • @Tisha 你设法让它工作了吗?我目前也在尝试将 Postgis 与 R2DBC 一起使用。我确实按照上面的建议编写了一个自定义转换器,但还没有成功
  • @JonckvanderKogel 还没有。

标签: spring-boot postgis reactive spring-data-r2dbc r2dbc


【解决方案1】:

几何状态和 R2DBC Postgres 驱动程序还有更多内容。请注意,这个领域的一切都在发展,所以事情可能会迅速改变。

从 0.8.5 版开始,R2DBC Postgres 驱动程序支持 Postgres 内部几何类型(pointline、...)。这些可以通过驱动类型io.r2dbc.postgresql.codec.Point等进行读写。

R2DBC Postgres 驱动程序是使用扩展模型构建的,因此可以向驱动程序注册外部编解码器以支持 Postgres 类型扩展。

Postgis JDBC 驱动程序最近收到了一个要求R2DBC PostGIS support 的功能请求。

最后一点是 Spring Data。它需要定义哪些类型是驱动程序原生类型,因此 Spring Data 可以传递复杂类型,而不是尝试映射这些类型。 an open ticket 将 R2DBC Postgres 的类型视为简单类型。

但是 Spring Data 中不支持 JTS,因为主要关注的是持久性模型。

【讨论】:

    【解决方案2】:

    r2dbc 还不支持空间数据。

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2021-05-04
      • 2018-08-30
      • 2013-10-24
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      相关资源
      最近更新 更多