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

冬眠空间5 -几何类型

阮雅达
2023-03-14

将Hibernate空间升级到版本5.0.0.CR2后,以下声明不再起作用:

@Column(columnDefinition = "geometry(Point,4326)")
@Type(type = "org.hibernate.spatial.GeometryType")
private Point position;

与一个:

org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.spatial.GeometryType]

如我所见,这个类不再存在于Jar文件中。几何类型发生了什么变化,它是如何被取代的?或者有另一个jar文件要包含吗?

编辑:澄清。我正在将Hibernate-Spatial与PostgreSQL-Postgis数据库结合使用。

共有3个答案

孟德曜
2023-03-14

对于Hibernate Sspace al 5.2. x,您只需要实体中的以下内容。

私有点位置;

您不需要像上面提到的解决方案那样使用列定义或类型。

一些额外的细节和检查,看看上面是否有效

    < li >一旦运行您的设置并在mysql中使用< code>desc表名,您应该会看到“几何图形”字段类型。这表明hibernate到数据库的映射工作正常。 < li >现在尝试从java创建一个实体和repo.save(entity ),您的实体应该可以正确保存,不会出现任何错误。

如果上面的设置没有工作得很好你通常会得到错误

数据截断:无法从发送到几何字段块引用的数据中获取几何对象

希望这能帮助某人节省我浪费的6个小时!

马国源
2023-03-14

丹尼斯上面建议的解决方案在Hiberate 5空间和MySQL上不适合我。但是下面的注释对我有用

  @Column(name = "location",columnDefinition="Geometry")
  private Geometry location;


  @Column(name = "pointlocation",columnDefinition="Point")
  private Point pointlocation;

如果您正在运行 Hibernate 5.3,则可以跳过列定义

  @Column(name = "location")
  private Geometry location;


  @Column(name = "pointlocation")
  private Point pointlocation;
赵健柏
2023-03-14

解决方案太容易看到了。只需删除@Type注释,声明如下所示:

@Column(columnDefinition = "geometry(Point,4326)")
private Point position;

来源:

请注意@Type批注。这将通知Hibernate位置属性的类型为几何。@Type注释是特定于 Hibernate 的,也是唯一需要的非 JPA 注释。(在 Hibernate 的未来版本(版本 5 及更高版本)中,不再需要显式声明几何值属性的类型。

 类似资料:
  • 问题内容: 将Hibernate-spatial升级到5.0.0.CR2版本后,以下声明不再起作用: 与: 如我所见,该类不再存在于Jar文件中。GeometryType发生了什么以及如何替换?还是要包含另一个jar文件? 编辑:为澄清。我正在结合使用Hibernate-Spatial和PostgreSQL-Postgis数据库。 问题答案: 那么解决方案太容易看到了。只需删除@Type批注,则声

  • 另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。

  • 我无法在创建模式下以Hibernate空间启动我的Spring启动(2.6.3)项目。它告诉我类型“几何不存在”。几何类型来自Hibernate空间库。 但是,我应用了所有必要的东西: > 添加Hibernate空间依赖项(我的版本5.6.3.Final) 使用组织.hibernate.空间.方言.postgis.Postgis方言 此外,该类已被弃用,文档对应于相同的版本,它仍然指示使用它,我不

  • 我有几个类注释为@Transactional 例如,我有第一类,这是Spring旋转变压器 类 我有一个控制器类,也标注了@Transactional 问题是每次我访问testDao.load(Test.class,1)hibernate时都会向数据库发出查询,而不是拉Test。控制器中的缓存中的类id=1。 为什么它不使用缓存?这两个调用在每个请求中发生,但似乎在不同的会话中。 如果我在控制器中

  • 配置类的应用程序侦听器时出现错误 这实际上是我的错误 ** 严重:配置类org的应用程序侦听器时出错。springframework。网状物上下文ContextLoaderListener java。lang.NoClassDefFoundError:javax/servlet/ServletContextListener **在爪哇。lang.ClassLoader。java上的findBoot

  • 我尝试使用这个类: Hibernate/JPA:在更新DB架构(如.NET EF迁移)之前检查生成的sql 我有以下代码: 我得到以下错误: 线程“main”java.lang.UnsupportedOperationException中的异常:试图使用不支持的SchemaExport构造函数接受org.hibernate.cfg.Configuration;接受org.hibernate.boo