org.hibernate.MappingException:否JDBC类型的方言映射:2002

Mol*_*oli 5 java oracle hibernate spatial

我在org.hibernate.MappingException: No Dialect mapping for JDBC type: 2002尝试执行JPA nativeQuery以获取几何字段类型时遇到问题。

我正在使用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());
Run Code Online (Sandbox Code Playgroud)

这是我在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>
Run Code Online (Sandbox Code Playgroud)

如何解决呢?还是如何强制几何类型来使其正常工作?

Pas*_*ent 5

您可以尝试使用以下映射定义吗:

@Column(name = "geometry", columnDefinition="Geometry", nullable = true) 
private Geometry geometry;
Run Code Online (Sandbox Code Playgroud)

代替:

@Column(name="geometry")  
@Type(type = "org.hibernatespatial.GeometryUserType")  
private Geometry geometry;
Run Code Online (Sandbox Code Playgroud)


Dav*_*d M 3

问题不在于您的查询或映射,而在于您的 Hibernate 配置。您会发现您为要使用的 SQL 方言名称指定了错误的字符串。建议您发布您正在使用的 Hibernate 配置文件。