休眠空间 5 - 几何类型

2022-09-01 11:38:28

将 Hibernate-spatial 升级到 V5.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文件中。GeometryType 发生了什么变化,它是如何被替换的?还是有另一个 jar 文件要包含?

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


答案 1

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

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

资料来源

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


答案 2

上面Denis提出的解决方案在Hiberate 5 spatial和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;

推荐