Den*_*ich 26 java hibernate postgis hibernate-spatial
将Hibernate-spatial升级到V5.0.0.CR2后,以下声明不再起作用:
@Column(columnDefinition = "geometry(Point,4326)")
@Type(type = "org.hibernate.spatial.GeometryType")
private Point position;
Run Code Online (Sandbox Code Playgroud)
与:
org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.spatial.GeometryType]
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,Jar-File中不再存在该类.GeometryType发生了什么,它是如何被替换的?或者是否包含另一个jar文件?
编辑:澄清.我正在将Hibernate-Spatial与PostgreSQL-Postgis数据库结合使用.
Den*_*ich 32
那么解决方案太容易看到了.只需删除@Type注释,因此声明如下所示:
@Column(columnDefinition = "geometry(Point,4326)")
private Point position;
Run Code Online (Sandbox Code Playgroud)
来源:
注意@Type注释.这告诉Hibernate,location属性是Geometry类型.@Type注释是特定于Hibernate的,并且是唯一需要的非JPA注释.(在Hibernate的未来版本(版本5及更高版本)中,将不再需要显式声明几何值类型的属性.)
Denis上面提出的解决方案在Hiberate 5 spatial和Mysql上对我没有用.但是以下注释对我有用
@Column(name = "location",columnDefinition="Geometry")
private Geometry location;
@Column(name = "pointlocation",columnDefinition="Point")
private Point pointlocation;
Run Code Online (Sandbox Code Playgroud)
对于 Hibernate Spatial 5.2.x,您所需要的只是实体中的以下内容。
private Point location;
您不需要像上述解决方案那样的 columnDefinition 或 Type 。
一些额外的细节并检查以上是否有效
desc table_name在 mysql 中运行您的设置并使用 ,您应该会看到geometry的字段类型。这表明您的休眠到数据库映射工作正常。如果上述设置不能正常工作,您通常会收到错误消息
数据截断:无法从您发送到 GEOMETRY 字段 Blockquote 的数据中获取几何对象
希望能帮助别人节省我浪费的 6 个小时!
| 归档时间: |
|
| 查看次数: |
15821 次 |
| 最近记录: |