我正在从事GIS项目。
我希望通过JSF + Hibernate生成Web GIS。
My Spatial数据位于Oracle-Spatial 12c中,对于某些空间分析,我必须连接到Oracle DB并插入更新空间表。
我看到这个链接Hibernate-Spatial
我首先尝试使用Net Beans 8.02中的Maven项目执行此操作但不正常工作!!
最后我做了这些步骤:
使用带有hibernate 4.3和JSF的net Beans 8.02创建一个Web应用程序
为Hibernate执行此步骤
从此链接下载Geo-tools的jar文件并添加到我的Project
从此链接下载hibernate-spatial 4.3的Jar文件和ojdbc7
http://www.hibernatespatial.org/documentation/01-download/01-releases/
将两个空间表添加到我的项目(LINE POINT)
在我的项目中设置此步骤以及我的Line和point Class以及.hbm.xml
http://www.hibernatespatial.org/documentation/03-dialects/05-oracle/
http://www.hibernatespatial.org/documentation/documentation/
当我在net Beans中构建我的项目并尝试从此行查询此错误时显示
java.lang.UnsupportedOperationException 在org.hibernate.spatial.GeometrySqlTypeDescriptor.getExtractor(GeometrySqlTypeDescriptor.java:57) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:259) at 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更好的解决方案吗?
答案 0 :(得分:0)
看起来它使用了错误的方言。 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。