首页 > 解决方案 > java.lang.RuntimeException:无法从 PreparedStatement 获取 OracleSpatial Connection 对象

问题描述

从 Oracle 数据库读取 org.locationtech.jts.geom.Geometry 时出现以下错误:

java.lang.RuntimeException: Couldn't get at the OracleSpatial Connection object from the PreparedStatement.
        at org.geolatte.geom.codec.db.oracle.DefaultConnectionFinder.find(DefaultConnectionFinder.java:101) ~[geolatte-geom-1.8.0.jar:na]
        at org.geolatte.geom.codec.db.oracle.OracleJDBCTypeFactory.createStruct(OracleJDBCTypeFactory.java:117) ~[geolatte-geom-1.8.0.jar:na]
        at org.hibernate.spatial.dialect.oracle.SDOGeometryValueBinder.store(SDOGeometryValueBinder.java:72) ~[hibernate-spatial-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.spatial.dialect.oracle.SDOGeometryValueBinder.toNative(SDOGeometryValueBinder.java:78) ~[hibernate-spatial-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.spatial.dialect.oracle.SDOGeometryValueBinder.bind(SDOGeometryValueBinder.java:53) ~[hibernate-spatial-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:276) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:271) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:53) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]
        at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:648) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]

这是我的application.yml:

spring:
  jpa:
    database-platform: org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect

存储库类:

@Repository
public interface TestRepository extends JpaRepository<TestEntity, Long> {

    @Query("SELECT s FROM TestEntity s where within(s.shape, :geom) = true")
    List<TestEntity> getAllSites(@Param("geom") Point geom);
}

标签: jpageospatial

解决方案


推荐阅读