Я добираюсь 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());
Это - мой быть в спящем режиме конфигурация по 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>
Как это может быть решено? Или как вынудить тип геометрии получить эту работу?
Проблема не в вашем запросе или отображении, а в вашей конфигурации Hibernate. Вы обнаружите, что указываете неправильную строку для имени используемого диалекта SQL. Предлагаем вам опубликовать файл конфигурации Hibernate, который вы используете.
Не могли бы вы попробовать следующее определение отображения:
@Column(name = "geometry", columnDefinition="Geometry", nullable = true)
private Geometry geometry;
Вместо:
@Column(name="geometry")
@Type(type = "org.hibernatespatial.GeometryUserType")
private Geometry geometry;
Спасибо за ответы,
Я решил проблему с помощью namedQuery, извлекающего весь объект со всеми полями, с его типом geometry.
Большое спасибо