Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hibernate spatial:检索几何体的sql查询_Hibernate_Geometry_Postgis_Hibernate Spatial - Fatal编程技术网

hibernate spatial:检索几何体的sql查询

hibernate spatial:检索几何体的sql查询,hibernate,geometry,postgis,hibernate-spatial,Hibernate,Geometry,Postgis,Hibernate Spatial,我正在使用postgresql、hibernate spatial和postgis,希望能够使用SqlQuery检索几何体对象 然而,每当我试图查询点、多边形或几何体时,例如 List list = session.createSQLQuery( "select geomfromewkt('SRID=1;POINT(1 1)')").list(); 我得到一个例外: Caused by: org.hibernate.MappingException: No Dialect mappin

我正在使用postgresql、hibernate spatial和postgis,希望能够使用SqlQuery检索几何体对象

然而,每当我试图查询点、多边形或几何体时,例如

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>
org.hibernatespatial.postgis.postgisdial
这不是hibernate spatial产品的一部分,还是我做错了什么

谢谢你,保罗

相关图书馆/版本:

  • hibernate-core-3.6.0.Final.jar
  • postgresql-9.0-801.jdbc4.jar
  • hibernate-spatial-postgis-1.1.1.jar
  • hibernate-spatial-1.1.1.jar
  • postgis-jdbc-1.3.3.jar
  • jts-1.12.jar

    • 我已经弄明白了。我需要通过标量将“GeometryUserType”应用于列

      SQLQuery qry = session.createSQLQuery("select geomfromewkt('SRID=1;POINT(1 1)') as geom");
      qry.addScalar("geom", GeometryUserType.TYPE);
      List<Geometry> list = qry.list();
      
      SQLQuery qry=session.createSQLQuery(“选择geomfromewkt('SRID=1;点(1)作为geom”);
      qry.addScalar(“geom”,GeometryUserType.TYPE);
      List=qry.List();
      
      我正在使用Hibernate 5.1.0 Final

      dao.getSession().createSQLQuery("select buffer from puntosdeinteres where puntoid = 13193")
                              .addScalar("buffer", new GeolatteGeometryType(PGGeometryTypeDescriptor.INSTANCE))
                              .uniqueResult();
      

      它是有效的,但现在我觉得这个冗长的语句很不舒服。

      数据库在空间上是启用的,并且具有正确的权限吗?在客户端,尝试
      select*From geometry\u columns
      Yes数据库一切正常。如果使用映射类和非本机sql类型查询(criteria/hsql),我可以通过hibernate检索几何体。我确信我必须以某种方式将“org.hibernatespatial.GeometryUserType”应用于列…根据hibernate 4+中的某些类型被弃用并因此删除。我不得不在hibernate 4.1.4中使用
      org.hibernate.spatial.GeometryType.INSTANCE
      ,而不是
      GeometryUserType.TYPE