Считывание значения столбца MDSYS.SDO_GEOMETRY в объект JAVA не приводит к неправильному типу столбца
Я использую 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? Как это должно быть сделано?
0 ответов
С 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;
}