gpt4 book ai didi

hibernate 空间 : "No Dialect mapping for JDBC type: 3000"

转载 作者:行者123 更新时间:2023-12-02 11:28:32 25 4
gpt4 key购买 nike

我正在尝试通过 Hibernate 将 Spring Roo 与支持 PostGIS 的 PostgreSQL 数据库集成,遵循 Hibernate Spatial tutorial 。所有非 GIS 内容都工作正常,并且我已经从 PostGIS 模板创建了一个数据库。

问题是,一旦我将几何属性添加到我的实体之一:

@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

Hibernate Spatial's dependencies似乎表明需要 postgis-jdbc 1.5.3,但 1.5.3 不存在于任何 Maven 存储库中,我无法从源代码编译它。我尝试过 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 依赖项?

您是否尝试使用以下注释来引用您的数据类型?请参阅https://stackoverflow.com/a/3047190/390462 .

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

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

关于 hibernate 空间 : "No Dialect mapping for JDBC type: 3000",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com