6

ジオメトリフィールドタイプを取得するためにJPAnativeQueryorg.hibernate.MappingException: No Dialect mapping for JDBC type: 2002を実行しようとすると取得します。

私はOracleとを使用していますorg.hibernatespatial.oracle.OracleSpatial10gDialect

ジオメトリフィールドは次のようにマップされます。

@Column(name="geometry")  
@Type(type = "org.hibernatespatial.GeometryUserType")  
private Geometry geometry;

// ...

List<Object> listFeatures = new LinkedList<Object>();

Query query = entityManager.createNativeQuery(
   "SELECT "+ slots +" , geometry FROM  edtem_features feature, edtem_dades dada WHERE" +
   " feature."+ tematic.getIdGeomField() +" = dada."+ tematic.getIdDataField()+ 
   " AND dada.capesid= "+ tematic.getCapa().getId() +
   " AND feature.geometriesid= "+ tematic.getGeometria().getId());
listFeatures.addAll(query.getResultList());

これは、spring+struts2での休止状態の構成です。

<bean id="entityManagerFactory"
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />

    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="databasePlatform" value="org.hibernatespatial.oracle.OracleSpatial10gDialect" />
            <property name="showSql" value="true" />
        </bean>
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernatespatial.oracle.OracleSpatial10gDialect</prop>
            <prop key="hibernate.default_schema">my_schema</prop>
        </props>
    </property>
</bean>

これはどのように解決できますか?または、ジオメトリのタイプを強制してこれを機能させる方法はありますか?

4

5 に答える 5

4

次のマッピング定義を試してみてください:

@Column(name = "geometry", columnDefinition="Geometry", nullable = true) 
private Geometry geometry;

それ以外の:

@Column(name="geometry")  
@Type(type = "org.hibernatespatial.GeometryUserType")  
private Geometry geometry;
于 2010-06-15T16:38:15.777 に答える
3

問題はクエリやマッピングではなく、Hibernate 構成にあります。使用する SQL ダイアレクトの名前に間違った文字列を指定していることがわかります。使用している Hibernate 構成ファイルを投稿することをお勧めします。

于 2010-06-15T10:18:36.137 に答える
0

返信ありがとうございます、

私はnamedQueryを使用して、彼のタイプジオメトリを使用して、すべてのフィールドを持つオブジェクト全体を取得することで解決しました。

どうもありがとう

于 2010-06-18T09:51:02.897 に答える