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

hibernate-space-4.0创建由茶列类型而不是几何

苏宏逸
2023-03-14

我正在使用使用Spring3.1和Hibernate4.2的应用程序。对于空间功能,我们计划将hibernate spatial与postgis结合使用。但hibernate spatial使用bytea类型而不是几何体创建列。我无法找出这一切的根本原因。我已经花了几天时间解决问题,但没有成功。

hibernate-spatial-4.0。罐子是用的。

我正在使用下面的hibernate。属性文件

database.driverClassName=org.postgresql.Driver
database.url=jdbc:postgresql://127.0.0.1:5433/mpdb
database.username=postgres 
database.password=postgres 
hibernate.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect 
hibernate.show_sql=true 
hibernate.hbm2ddl.auto=update

我在实体中使用以下注释

    @Column(columnDefinition="Geometry", nullable = true)
        @Type(type = "org.hibernate.spatial.GeometryType")
        private Point geom;

应用程序成功创建了下表,但它为geom列创建了bytea,而不是几何体类型

                         Table "public.tile"
           Column           |            Type             | Modifiers
----------------------------+-----------------------------+-----------
 id                         | integer                     | not null
 alt                        | double precision            | not null
 geom                       | bytea                       |
 lat                        | double precision            | not null
 lng                        | double precision            | not null
 multipath_table            | text                        | not null
 multipath_table_min_value  | double precision            |
 multipath_table_resolution | integer                     |
 multipath_table_tx_id      | text                        |
 tile_created               | timestamp without time zone | not null
 tile_data_age              | integer                     |
 tile_data_present          | text                        | not null
 tile_num_tx                | integer                     |
Indexes:
    "tile_pkey" PRIMARY KEY, btree (id)

但是,我可以手动在postgis2中创建几何体类型列。2-postgres9。5数据库

我几乎通读了每一条线索,但都没有成功。需要帮助。

共有2个答案

茅曾琪
2023-03-14

PostGisDialante注册JT或Geolatte点类型(请参阅Hibernate spatial文档和源代码。如果是JT,请通过更新依赖项和检查导入,确保使用最新版本(org.locationtech.JTS)而不是旧版本(com.livitSolutions.JTS)(我的类路径上既有旧的依赖项,也有新的依赖项,但不小心导入了错误的依赖项)。

一个工作示例(在Kotlin中,但是获取Java导入/注释应该很简单):

我的实体(注意:在Point类型上根本没有注释!):

import org.locationtech.jts.geom.Point
import java.time.ZonedDateTime
import javax.persistence.*

@Entity
data class TrackPoint(
        @Id @GeneratedValue var id: Long? = null,
        var location : Point,
        var time : ZonedDateTime,
        @ManyToOne
        var track: Track? = null
 )

创建TrackPoint的映射函数,然后将其持久化:

fun mapWayPoint2TrackPoint(it: WayPoint) : TrackPoint {
    val coordinate = Coordinate(it.longitude.toDouble(), it.latitude.toDouble(), it.elevation.get().toDouble())
    val point = geometryFactory.createPoint(coordinate)
    return TrackPoint(location = point, time = it.time.get())
}    

此外,您可能会使用一种较新的postgis方言(如PostGispg95方言),因为postgis方言已被弃用。

越高峻
2023-03-14

我可以通过修改实体类中使用的注释来解决这个问题。这对我有用@列(columnDefinition=“geometry(Point,4326)”)私有组织。冬眠空间的GeometryType geom;

 类似资料:
  • 问题内容: 我注释了一堆POJO,以便JPA可以使用它们在Hibernate中创建表。似乎所有表都被创建,除了一个非常中央的表,称为“修订”。Revision类具有注释,因此它将被重命名为RevisionT,因此与MySQL(目标数据库)中的任何保留字都没有冲突。 我删除整个数据库,重新创建它,然后基本上打开和关闭JPA会话。似乎可以毫无问题地重新创建所有表。 为什么在创建的架构中缺少单个表?可以

  • 我正在使用OpenApi生成器为我的angular项目创建服务和模型。 这是我的 Json 的一个示例: 当我生成文件时,上传日期被转换为字符串而不是日期。 看: 有没有办法添加配置并使用Date作为格式为date-time的类型创建模型? 这是我用来启动生成的脚本:

  • 我有一个像这样的xsd- 当我使用XJC生成类绑定时,我看到教师是List类型的 如何生成字符串列表而不是对象?任何帮助都很感激。 更新:使用“vamsilp”提供的解决方案——在删除“教师”元素上的“minOccurs”后,它工作得很好!XSD是由泽西从以下代码自动生成的: 我不知道如何删除“minOccurs”属性。我是否需要修改代码以忽略它?

  • 本页包含内容: 自定义原型 实现默认值 支持基本布尔型初始化 支持Bool类型判断 支持兼容各们各派的类型 完善OCBool的布尔基因体系 小伙伴们,Swift中的Bool类型有着非常重要的语法功能,并支撑起了整个Swift体系中的逻辑判断体系,经过老码的研究和学习, Bool类型本身其实是对基础Boolean类型封装,小伙伴们可能咬着手指头问老码,怎么一会Bool类型,一会Boolean类型,其

  • 我正在处理 PostgreSQL 客户记录。 我的任务是导出客户记录。 除了有联系信息的客户之外,我还有另一张桌子。 每行一个联系人项目(电话、值或电子邮件、值等)。 当我加入并关联数据时,我会为每个客户ID提取多个记录(如果每个客户有一个以上的通信类型,例如电话和电子邮件)。 我怎么能不为每种通信类型再做一行,而是将信息放入临时列(如电话列,传真列和电子邮件列)中 - 然后每个客户只有1行。 编