当前位置: 首页 > 知识库问答 >
问题:

Hibernate 5.1与Postgis 2.2几何列映射

史俊德
2023-03-14

hibernate 5.1 spatial的文档尚未发布(AFAIK),我正在尝试将带有JST几何字段的实体持久化到PostgreSQL 9.5 Postgis 2.2,但没有任何运气。

我也注意到没有组织。冬眠hibernate-core-5.1中的空间包。0.我尝试了以下注释的变体:

@javax.persistence.Column(name = "the_geom", columnDefinition = "Geometry")
public com.vividsolutions.jts.geom.Geometry geom;

当列定义设置为“点”时,我得到“列”the_geom“是点的类型,但表达式是由茶的类型”。在Hibernate空间4留档中,据说版本5中不需要@Type注释,但是应该使用什么来代替呢?如何将geom存储为有效的Postgis几何?

共有1个答案

公羊浩阔
2023-03-14

在寻找了一段时间后,我找到了一个适合我需要的解决方案(我也希望是你的)。由于在版本5中,所有jtsgeolatte几何体类型都可以由hibernate直接管理,因此您应该配置hibernate来管理这些类型。

在我的场景中,我管理Spring@Configuration类中的所有配置:在那里,如这里的示例9所示,我决定使用MetadataBuilder方法,如下所示:

@Bean
public static MetadataBuilder metadataBuilder() {

    ServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().build();
    MetadataSources sources = new MetadataSources( standardRegistry );
    return sources.getMetadataBuilder();
}

@Bean
public static MetadataBuilder spatialConfiguration() {

    JTSGeometryType jtsGeometryType = new JTSGeometryType(PGGeometryTypeDescriptor.INSTANCE);
    return PersistenceConfiguration.metadataBuilder().applyBasicType(jtsGeometryType);
}

这样,所有我的jt几何体(还有另一个用于geolatte几何体org.hibernate.spatial.GeolatteGeometryType)都正确映射为我的数据库模型中的declare。

希望这能对你有所帮助,,

达里奥。

 类似资料:
  • 我需要使用nHibernate读取postgis几何列作为wkt。我知道我可以使用nHibernate空间,但在我的情况下这不是一个选项。 我看过这个帖子:在NHibernate (fluent)中映射隐藏属性的最佳方式,其中wkt存储在另一列中,他使用触发器来更新实际的几何图形。然而,项目业主不希望为此增加一个额外的栏目。 我也发现了这个主题:在Hibernate中透明地使用PostGIS列,但

  • 问题内容: 我在课堂上有以下财产: 通过ES中的以下映射 我想进行汇总以返回按“星期几”分组的所有数据,即“星期一”,“星期二” …等 我知道我可以在聚合调用中使用“脚本”来执行此操作,但是,据我了解,如果有很多文档,使用脚本不会对性能产生不小的影响。 有没有一种方法可以用“子属性”映射属性。即我可以用一个字符串: 全部具有代码中类的单个属性。 我可以做一些类似的事情来分别存储“完整日期”,然后分

  • POSTGIS=“2.5.4” [扩展] PGSQL=“120” GEOS=“3.8.1-CAPI-1.13.3” PROJ=“Rel. 6.3.2, May 1st, 2020” GDAL=“GDAL 3.0.4, 2020/01/28 发布” LIBXML=“2.9.7” LIBJSON=“0.13.1” LIBPROTOBUF=“1.3.0” RASTER Java Postgis Depe

  • 问题内容: 如何将POJO映射到几个JSON表示形式? 我正在使用杰克逊。 我想要下面的代码 杰克逊该怎么做?或还有哪些其他图书馆可以做到这一点? 问题答案: 您使用JSON视图 请注意,这些是 包容性 而非排他性;您创建一个包含所需字段的视图。

  • 下课: 我现在有一个,我想将其转换为(应该是)的总和。使这变得困难的是,我想在内部映射中正好有26个条目,其中第26个被称为“其他”,它总结了所有数字低于其他25个的条目。 我得到了以下代码:

  • 问题内容: 因此,我向空间表中添加了几何列,并使用了某些msdn引用,最终将SRID指定为0,如下所示: 但是,我认为这是一个错误,但是在必须更新列之前,0实际是默认值= 4326吗?只要我在查询上将SRID指定为0,该查询就可以使用,但是与我所拥有的地理位置字段相比,我得到的结果很奇怪… sys.spatial_reference_systems中不存在SRID 0,并且我无法搜集有关的任何信息