Hibernate Spatial チュートリアルに従って、Hibernate を介して Spring Roo を PostGIS 対応の PostgreSQL データベースと統合しようとしています。GIS 以外のものはすべて正常に動作しており、PostGIS テンプレートから DB を作成しました。
問題は、Geometry プロパティをエンティティの 1 つに追加するとすぐに次のようになることです。
@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 が必要であることを示唆しているようですが、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"/>