当前位置: 首页 > 面试题库 >

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

鲁德佑
2023-03-14
问题内容

我正在尝试遵循Hibernate Spatial教程,通过Hibernate将Spring
Roo与启用PostGIS的PostgreSQL数据库集成。所有非GIS的东西都可以正常工作,并且我已经从PostGIS模板创建了一个数据库。

问题是,一旦我向其中一个实体添加了Geometry属性,就可以:

@Type(type="org.hibernate.spatial.GeometryType")
private Point centerPoint;

构建良好,但是尝试在服务器上运行(并实际上与DB交互)会导致以下错误:

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

Hibernate Spatial的依赖项似乎表明需要postgis-jdbc
1.5.3,但任何Maven存储库中都没有1.5.3,我无法从源代码进行编译。我试过1.5.2和1.3.3,并且都导致相同的3000错误。HS表示应“提供”
1.5.3,但将依赖项设置为1.5.3 <scope>provided</scope>则无济于事。

这仅仅是需要精确版本的JDBC的情况,还是其他错误?

我的POM的相关摘录如下:

        <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>

来自persistence.xml

<property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/>

问题答案:

您的例外情况意味着Postgresql方言不支持注释提供的数据类型。用自定义类扩展它以增加支持可能是解决问题的一种方法。

我看过GIS项目,您是否也提供具有编译范围的javassist依赖项?

@Column(name = "geometry", columnDefinition="Geometry", nullable = true) 
private Geometry geometry;

据我所知,您需要给columnDefinition您的字段一个,否则它将无法将该字段映射到良好的db列。



 类似资料:
  • 问题内容: 尽管此标题存在一些问题,但我的查询并没有从那些线程中解决。 我正在通过postgres中的hibernate执行递归查询(与子句一起使用),查询结果也包含搜索路径 例如:查询结果的一行 hibernate状态是否具有String以外的任何映射类型,类似于或。 下面是查询输出的示例 Hibernate抛出异常 原因:org.hibernate.MappingException:没有JDB

  • 我正在开发一个Spring JPA应用程序,使用MySQL作为数据库。我确保加载了所有spring-jpa库、hibernate和mysql-connector-java。 期待您的回答,谢谢! 顺便说一句,应用程序已经在使用spring Boot了。

  • 问题内容: 我正在使用MySQL作为数据库的Spring JPA应用程序。我确保已加载所有spring-jpa库,hibernate和mysql-connector- java。 我正在运行mysql 5实例。这是我的application.properties文件的摘录: 执行集成测试时,spring可以正常启动,但无法创建hibernate的SessionFactory,但以下情况除外: 我认

  • 虽然这个标题存在一些问题,但我的查询无法从这些线程中解决。 我在postgres中通过hibernate执行递归(使用with子句)查询,查询结果也包含搜索路径 ex:一行查询结果 Hibernate是否具有除字符串以外的的任何映射类型,类似于或。 下面是查询输出的示例 Hibernate正在抛出异常 原因:org.hibernate.MappingException:没有JDBC类型的方言映射:

  • 我在启动Web服务器时遇到上述错误。我用 enum 映射和 enity 类。类似... 是什么问题,我在配置中遗漏了什么吗?谢谢!!

  • 问题内容: 我是hibernate和Java的新手。我正在尝试执行本机sql查询,但是我被卡住了。谁能帮助我或检查我在哪里做错了? 我的Java代码是 : 错误跟踪 : 我确实调试了程序,发现程序中断了 hibernate配置文件: 问题答案: 您需要输入本机sqlquery语法。为了避免使用ResultSetMetadata的开销,或者只是为了更明确地说明返回的内容,可以使用。 像这样: