Hibernate Spatial:“;没有JDBC类型的方言映射:3000“;

Hibernate Spatial:“;没有JDBC类型的方言映射:3000“;,hibernate,maven,jdbc,dependencies,postgis,Hibernate,Maven,Jdbc,Dependencies,Postgis,我正试图通过Hibernate将SpringRoo与支持PostGIS的PostgreSQL数据库集成,如下所示。所有非GIS的东西都很好用,我已经从PostGIS模板创建了一个DB 问题是,只要我将几何体特性添加到一个实体中: @Type(type="org.hibernate.spatial.GeometryType") private Point centerPoint; 。。。它构建的很好,但是尝试在服务器上运行(并且实际与数据库交互) 导致以下错误的原因: Caused by: or

我正试图通过Hibernate将SpringRoo与支持PostGIS的PostgreSQL数据库集成,如下所示。所有非GIS的东西都很好用,我已经从PostGIS模板创建了一个DB

问题是,只要我将几何体特性添加到一个实体中:

@Type(type="org.hibernate.spatial.GeometryType")
private Point centerPoint;
。。。它构建的很好,但是尝试在服务器上运行(并且实际与数据库交互) 导致以下错误的原因:

Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 3000
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:77)
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:100)
    at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:298)
    at org.hibernate.mapping.Column.getSqlType(Column.java:208)
    at org.hibernate.mapping.Table.sqlCreateString(Table.java:418)
    at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:1099)
    at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:106)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:372)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906)
    ... 41 more

您的异常意味着Postgresql方言无法支持批注提供的数据类型。使用自定义类扩展它以添加支持可能是解决问题的一种方法

我已经看过了GIS项目,您是否也提供了具有编译范围的javassist依赖关系

您是否尝试使用以下注释引用您的数据类型?看

据我所知,您需要为字段提供一个
列定义
,否则它将无法将字段映射到良好的db列。

我找到了解决方案

(Grails,HibernateSpatial 4.3,Config.groovy)


关于方言,我忘了提到默认的
PostgreSqlDialogue
和正确的
org.hibernate.spatial.dialogue.postgis.postgisdialogue
也有同样的问题,就是这样。我没有添加javassist依赖项,因为它应该以传递方式包含。不幸的是,手动将依赖项添加到POM没有任何区别:(.我一直在学习教程,并完成了所有这些内容,所以我希望不使用任何自定义类。看看这些教程。你似乎正在使用lib hibernate spatial的里程碑版本和他们的postgis jdbc包的较低版本:尝试使用1.5.3。有时它会变得很神奇。叹气。所以我终于设法做到了。)使用Ant编译PostGIS JDBC 1.5.3,我将其复制到相应的Maven repository目录中,并将我的POM PostGIS JDBC版本更新到1.5.3,瞧,它没有抱怨!它捡到了它,并在Maven依赖项库中列出了它。但是我仍然得到了完全相同的错误。好吧,也许是Pascal Thivent wil我帮你。你知道吗,这可能已经奏效了!我已经看到了这个问题,但直接恢复到Hibernate注释似乎是从Roo解决方案中走出来的。我会做一些测试来确认,但非常感谢你的提示。
        <dependency>
            <groupId>com.vividsolutions</groupId>
            <artifactId>jts</artifactId>
            <version>1.12</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-spatial</artifactId>
            <version>4.0-M1</version>
        </dependency>
        <dependency>
            <groupId>org.postgis</groupId>
            <artifactId>postgis-jdbc</artifactId>
            <version>1.5.2</version>
        </dependency>
<property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/>
@Column(name = "geometry", columnDefinition="Geometry", nullable = true) 
private Geometry geometry;
hibernate {
    // ...
    dialect = 'org.hibernate.spatial.dialect.postgis.PostgisDialect'
}