【问题标题】:hibernate Spatial with oracle not work correct?使用 oracle 的休眠空间无法正常工作?
【发布时间】:2015-07-11 14:53:24
【问题描述】:

我正在从事 GIS 项目。

我想通过 JSF + Hibernate 制作一个 Web GIS。

我的空间数据在 Oracle-Spatial 12c 中,对于一些空间分析,我必须连接到 Oracle DB 并插入更新空间表。

我看到这个链接 Hibernate-Spatial

我首先尝试在 Net Beans 8.02 中使用 Maven 项目执行此操作,但结果不正确!!

最后我完成了这些步骤:

  1. 使用带有 hibernate 4.3 和 JSF 的 net Beans 8.02 创建一个 Web 应用程序

  2. 为休眠执行此步骤

    https://netbeans.org/kb/docs/web/hibernate-webapp.html

  3. 从此链接下载 Geo-tools 的 jar 文件并添加到我的项目中

    http://sourceforge.net/projects/geotools/files/

  4. 从此链接和ojdbc7下载hibernate-spatial 4.3的Jar文件

    http://www.hibernatespatial.org/documentation/01-download/01-releases/

  5. 将两个空间表添加到我的项目(LINE POINT)

  6. 在我的项目和我的 Line 和 Point Class 和 .hbm.xml 中设置此步骤

    http://www.hibernatespatial.org/documentation/03-dialects/05-oracle/

    http://www.hibernatespatial.org/documentation/documentation/

  7. 当我在 net Beans 中构建我的项目并尝试从行获取此错误显示时查询此错误

    java.lang.UnsupportedOperationException 在 org.hibernate.spatial.GeometrySqlTypeDescriptor.getExtractor(GeometrySqlTypeDescriptor.java:57) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:259) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249) 在 org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:334) 在 org.hibernate.persister.entity.AbstractEntityPersister.hydrate (AbstractEntityPersister.java:2969) 在 org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1695) 在 org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1627) 在 org.hibernate.loader.Loader.getRow(Loader.java:1514) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:725) 在 org.hibernate.loader.Loader.processResultSet(Loader.java:952) 在 org.hibernate.loader.Loader.doQuery(Loader.java:920) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在 org.hibernate.loader.Loader.doList(Loader.java:2551) 在 org.hibernate.loader.Loader.doList(Loader.java:2537) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2367) 在 org.hibernate.loader.Loader.list(Loader.java:2362) 在 org.hibernate.hql.internal.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:939) 在 org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:229) 在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1260) 在 org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)

请帮助我如何解决问题或 是比 hibernate-spatial 更好的解决方案吗?

【问题讨论】:

  • 能否分享一下设置方言等配置相关的细节

标签: hibernate maven oracle-spatial hibernate-spatial


【解决方案1】:

看起来它使用了错误的方言。 Hibernate Spatial (HS) 4.3 的 OracleSpatial10gDialect 将负责将那些 GeometrySqlTypeDescriptor 重新映射到实现 SqlTypeDescriptor.getExtractor 的 SDOGeometryTypeDescriptor(参见 HS 4.3 中的 remapSqlTypeDescriptor 函数)。 因此,请检查您的 hibernate/persistence.xml 配置以获取下一个属性:

<property name="hibernate.dialect">org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect</property>
<property name="hibernate.spatial.connection_finder">org.hibernate.spatial.dialect.oracle.DefaultConnectionFinder</property>

查看此链接以获取explanation of connection_finder

请注意,您必须使用 HS 4.3,因为您使用的是 Hibernate 4.3 版。对于父亲的问题,请记住这个版本的 HS 在 Oracle 10g 和 11g 上进行了测试,但它没有说明 Oracle 12c。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多