我使用postgresql,hibernate-spatial和postgis,期望能夠使用SqlQuery來檢索幾何對象。hibernate-spatial:用於檢索幾何的sql查詢
但是每當我試圖查詢點,多邊形或幾何形狀如
List list = session.createSQLQuery(
"select geomfromewkt('SRID=1;POINT(1 1)')").list();
我得到異常:
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
at org.hibernate.dialect.TypeNames.get(TypeNames.java:78)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:103)
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:328)
at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:590)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:516)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:532)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1962)
at org.hibernate.loader.Loader.doQuery(Loader.java:802)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
的hibernate.cfg.xml:
<property name="dialect">org.hibernatespatial.postgis.PostgisDialect</property>
是這不是hibernate-spatial產品的一部分,還是我做錯了什麼?
謝謝,保羅。
相關庫/版本:
- 休眠核-3.6.0.Final.jar
- 的PostgreSQL-9.0-801.jdbc4.jar
- 休眠空間-PostGIS的-1.1.1的.jar
- 休眠空間-1.1.1.jar
- PostGIS的-JDBC-1.3.3.jar
- JTS-1.12.jar
數據庫是否空間啓用且具有正確的權限?從客戶端,嘗試'select * from geometry_columns' –
是的,數據庫一切正常。如果使用映射類和非本機sql類型查詢(criteria/hsql),我可以通過hibernate檢索幾何。 – pstanton
我確信我必須以某種方式將'org.hibernatespatial.GeometryUserType'應用於列... – pstanton