Ошибка:
com.vertica.support.exceptions.DataException: [Vertica]VJDBC ERROR: невозможно напрямую ВСТАВИТЬ или КОПИРОВАТЬ пользовательские типы. Пожалуйста, вычислите их, используя соответствующие пользовательские функции.
Мой текущий диалект
public class VerticaDialect extends org.hibernate.spatial.dialect.postgis.PostgisDialect {
private static final String SELECT_LAST_INSERT_ID = "SELECT LAST_INSERT_ID()";
@Override
public IdentityColumnSupport getIdentityColumnSupport() {
return new IdentityColumnSupport() {
...
@Override
public String getIdentitySelectString(String arg0, String arg1, int arg2) throws MappingException {
return SELECT_LAST_INSERT_ID;
}
...
};
}
}
Мои зависимости
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.1.1.Final</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
My Vertica table
alter table something add GIS_WGS84 GEOGRAPHY NULL;
Моя модель
import org.geolatte.geom.C2D;
import org.geolatte.geom.G2D;
import org.geolatte.geom.Polygon;
@Column(name="gis_wgs84")
public Polygon<G2D> getGisWGS84() {
return gisWGS84;
}
public void setGisWGS84(Polygon<G2D> gisWGS84) {
this.gisWGS84 = gisWGS84;
}
Мой тест
Geographic2DCoordinateReferenceSystem wgs84 = CrsRegistry.getGeographicCoordinateReferenceSystemForEPSG(4326); // G2D
PositionSequence<G2D> wgs84positionSequence =
PositionSequenceBuilders.fixedSized(5, G2D.class)
.add(new G2D(30.0, 60.0))
.add(new G2D(30.0, 61.0))
.add(new G2D(31.0, 61.0))
.add(new G2D(31.0, 60.0))
.add(new G2D(30.0, 60.0))
.toPositionSequence();
Polygon<G2D> wgs84poly = new Polygon<>(wgs84positionSequence, wgs84);
something.setGisWGS84(wgs84poly);
Мои вопросы:
- Должен ли я использовать
org.geolatte.geom.Polygon
или что-то еще? Существует также этот пакетcom.vividsolutions.jts.geom
. Я смущен. Hibernate ORM документация бесполезна; он упоминает оба, и пример не показывает импорт. - Должен ли я переопределить диалект Postgis? Vertica загружает данные с помощью функции
ST_GeographyFromText('LINESTRING(-42.0 23.0, -62.0 23.0)')