我想使用hibernate空间来处理我的空间对象。我正在使用hibernate-spatial-4.0.1
和hibernate 4.2
。我的方言:
<property name="hibernate.dialect"> org.hibernate.spatial.dialect.postgis.PostgisDialect</property>
我有一个像这样的实体:
@Entity
@DiscriminatorValue(CK.LAYER_PICTURES)
public class PicsLayerItem extends LayerItem {
@Column(name = "place_name")
private String placeName;
public void setPlaceName(String name) {
this.placeName = name;
}
public String getPlaceName() {
return this.placeName;
}
@Type(type = "org.hibernate.spatial.GeometryType")
@Column(name = "locations", nullable = true)
private LineString locations;
public LineString getLocations() {
return locations;
}
}
当hibernate更新架构时,它遇到了这个错误:
ERROR [http-nio-8084-exec-53] org.hibernate.tool.hbm2ddl.SchemaUpdate.execute HHH000388: Unsuccessful: alter table public.tree_item add column locations GEOMETRY
ERROR [http-nio-8084-exec-53] org.hibernate.tool.hbm2ddl.SchemaUpdate.execute ERROR: type "geometry" does not exist
我想我的postgresql不支持geomtry类型。我用PgAdminIII。这是postgis。它支持polygon
等数据类型。
我可以做些什么来解决这个问题? 类似的问题没有回答:Type geometry not found with postgis and hibernate-spatial
答案 0 :(得分:0)
您的Postgresql不支持几何体。您需要为其添加postgis
扩展名才能创建空间数据库。所以从here为postgresql下载合适的postgis扩展。然后将其安装在postgresql安装文件夹中,例如(在我的系统中)在以下路径中:
C:\Program Files (x86)\OpenGeo\OpenGeo Suite\pgsql\9.1