PostGIS Zapisywanie geometrii: „Napotkano niepoprawną wartość flagi endianu”.

Mam projekt Spring Roo + Hibernate, który pobiera dobrze znany tekst JTS (WKT) String z aplikacji klienta, konwertuje go na obiekt JTS Geometry, a następnie próbuje zapisać go w bazie danych PostGIS. Miałem z tym problemypołączenie i typy JDBC, ale wydaje się, że zostały rozwiązane za pomocą:

@Column(columnDefinition = "Geometry", nullable = true) 
private Geometry centerPoint;

A konwersja to:

Geometry geom = new WKTReader(new GeometryFactory(new PrecisionModel(), 4326)).read(source);

Jednak teraz, gdy Hibernate próbuje zapisać mój obiekt Geometry w bazie danych, pojawia się błąd:

2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - Batch entry 0 insert into land_use (center_point, version, id) values ('<stream of 1152 bytes>', '0', '1') was aborted.  Call getNextException to see the cause.
2012-08-31 21:44:14,096 [tomcat-http--18] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: Invalid endian flag value encountered.

Wydaje się jasne, że błąd jest związany z reprezentacją binarną, która prawdopodobnie jest generowana jako dobrze znany binarny (WKB) z niektórymiendianness. Jednak z Hibernate ukrywającym całą wytrwałość, nie mogę powiedzieć, w którą stronę wszystko idzie.

Walczę z tą geometrią od wielu dni i jest bardzo mało informacji na temat tych błędów, więc czy ktoś ma jakieś jasne pomysły? Czy mogę określić endianness gdzieś (Hibernate lub PostGIS) lub może przechowywać w innym formacie (WKT)?

EDYTOWAĆ: Powinienem również wspomnieć, że używam najnowszego wszystkiego, co wydaje się być zgodne:

Wiosna 3.1.1, Roo 1.2.1hibernacja 3.6.9hibernate-spatial 4.0-M1jts 1.12PostgreSQL 9.1postgis-jdbc 1.5.3 (nie ostatni, alezalecane dla hibernate-spatial, skompilowany ze źródła)postgis-jdbc 2.0.1 (właśnie próbowałem tego teraz, aby dopasować wersję zainstalowaną z PostgreSQL, ten sam problem)

TheSamouczek Hibernate Spatial 4 sugeruje wykonanie adnotacji właściwości jako:

@Type(type="org.hibernate.spatial.GeometryType")
private Geometry centerPoint;

... ale kiedy to robię, dostajęten inny błąd, które rozwiązuje bieżąca adnotacja.

questionAnswers(3)

yourAnswerToTheQuestion