Hibernate Spatial: „Mapowanie bez dialektu dla typu JDBC: 3000”
Próbuję zintegrować Spring Roo z bazą PostgISSQL obsługującą PostGIS poprzez Hibernate, zgodnie zHibernacyjny samouczek przestrzenny. Wszystkie rzeczy inne niż GIS działają poprawnie, a ja utworzyłem DB z szablonu PostGIS.
Problem polega na tym, że gdy tylko dodam właściwość Geometria do jednego z moich elementów:
@Type(type="org.hibernate.spatial.GeometryType")
private Point centerPoint;
... buduje się dobrze, ale próba uruchomienia na serwerze (a właściwie interakcji z DB) powoduje błąd poniżej:
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
Zależności przestrzenne Hibernate wydaje się sugerować, że postgis-jdbc 1.5.3 jest wymagany, ale 1.5.3 nie jest obecny w żadnym repozytorium Mavena i nie mogę go skompilować ze źródła. Próbowałem już 1.5.2 i 1.3.3 i oba powodują ten sam błąd 3000. HS mówi, że 1.5.3 powinno być „dostarczone”, ale ustawienie zależności na 1.5.3 i<scope>provided</scope>
też nie pomaga.
Czy to po prostu potrzeba precyzyjnej wersji JDBC, czy coś jest nie tak?
Odpowiedni fragment mojego POM jest następujący:
<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>
I odpersistence.xml
:
<property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/>