Считывание значения столбца MDSYS.SDO_GEOMETRY в объект JAVA не приводит к неправильному типу столбца - PullRequest
0 голосов
/ 28 августа 2018

Я использую hibernate 4.1.12 и пытаюсь получить столбец MDSYS.SDO_GEOMETRY из базы данных Oracle в моей сущности JAVA.

В pom.xml у меня есть:

<dependency>
    <groupId>oracle</groupId>
    <artifactId>sdoapi</artifactId>
    <version>11.2.0</version>
</dependency>

В сущности, у меня есть:

@Column(name = "GEOMETRY", nullable = false)
private JGeometry geometry;

При запуске приложения в процессе проверки я получаю следующее:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring/jpa-em-config.xml]: 

Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: mapperPU] Unable to build EntityManagerFactory

Caused by: org.hibernate.HibernateException: Wrong column type in DB_USER1.WORK_AREA for column GEOMETRY.
Found: sdo_geometry, expected: raw(255)

Может быть, это неправильный способ чтения столбца MDSYS.SDO_GEOMETRY для объекта JAVA? Как это должно быть сделано?

1 Ответ

0 голосов
/ 27 мая 2019

С Oracle10gDialect и следующими определениями он работал в моем случае.

import com.vividsolutions.jts.geom.Geometry;

@Type(type = "org.hibernate.spatial.GeometryType")
@Column(name = "GEOMETRY", columnDefinition = "MDSYS.SDO_GEOMETRY")
public Geometry getGeometry() {
    return this.geometry;
}
...