将Hibernate-spatial升级到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文件中。GeometryType发生了什么事,它是如何被替换的?或者还有另一个jar文件要包含?
编辑:为了澄清。我使用Hibernate-Spatial与PostgreSQL数据库相结合。
发布于 2015-09-20 15:15:51
这个解决方案太容易看到了。只需删除@Type注释即可,因此声明如下所示:
@Column(columnDefinition = "geometry(Point,4326)")
private Point position;来源
注意@Type注释。这就通知Hibernate位置属性是几何类型的。@Type注释是Hibernate特有的,是唯一需要的非JPA注释。(在Hibernate的未来版本(版本5及更高版本)中,不再需要显式声明几何值属性的类型。)
发布于 2016-01-20 13:07:16
以上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;发布于 2018-05-02 10:01:25
对于Hibernate Spatial 5.2.x,您所需要的只是实体中的以下内容。
private Point location;
您不需要像上面提到的解决方案那样使用columnDefinition或Type。
一些额外的细节和检查,看上面是否有效。
desc table_name,您就会看到几何图形的字段类型。这表明您的hibernate到数据库映射运行良好。如果上面的设置不能正常工作,您通常会得到错误。
数据截断:无法从发送到几何图形字段的数据中获取几何对象
希望这能帮助别人节省我浪费的6个小时!
https://stackoverflow.com/questions/31440496
复制相似问题