2016-04-20 4 views
9

Dokumentation für Hibernate 5.1 räumliche ist noch nicht freigegeben (AFAIK) und ich versuche, Entitäten mit JST Geometrien Felder zu PostgreSQL 9.5 + Postgis 2.2, ohne Glück beizubehalten.Hibernate 5.1 mit Postgis 2.2 Geometrie Spalten Mapping

Ich habe auch festgestellt, dass es kein org.hibernate.spatial-Paket in Hibernate-Core-5.1.0 gibt. Ich habe Variationen der folgenden Anmerkung versucht:

@javax.persistence.Column(name = "the_geom", columnDefinition = "Geometry") 
public com.vividsolutions.jts.geom.Geometry geom; 

Wenn Column wird auf „Punkt“ I „Spalte‚the_geom bekommt‘ist vom Typ Punkt aber Ausdruck vom Typ bytea“. In der Hibernate Spatial 4-Dokumentation heißt es, dass die @Type-Annotation ab Release 5+ nicht mehr benötigt wird, aber was sollte stattdessen verwendet werden? Wie speichert man das Geom als gültige Postgis-Geometrie?

+0

Hallo @Mihai Ich habe das gleiche Problem im Moment mit der gleichen Konfiguration und Abhängigkeiten. Ich suche eine Weile ohne Ergebnis, hast du etwas entdeckt, was zumindest die Ursache des Problems ist? – Dario

+0

Hallo @Dario, wegen der Zeitmangel habe ich für den Moment 4.3 in Hibernate heruntergestuft. Ich warte darauf, dass die offizielle Dokumentation verfügbar ist. –

Antwort

0

Nach der Suche nach einer Weile fand ich eine Lösung, die meine Bedürfnisse erfüllt (ich hoffe auch Ihre). Da bei Version 5 alle Geometrietypen jts und geolatte direkt vom Ruhezustand verwaltet werden können, sollten Sie Hibernate für die Verwaltung dieser Typen konfigurieren.

In meinem Szenario wo ich all die Konfiguration in einer Feder @Configuration Klasse: dort, wie in dem "Beispiel 9" von here mir den MetadataBuilder Ansatz entschieden wie folgt dargestellt:

@Bean 
public static MetadataBuilder metadataBuilder() { 

    ServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().build(); 
    MetadataSources sources = new MetadataSources(standardRegistry); 
    return sources.getMetadataBuilder(); 
} 

@Bean 
public static MetadataBuilder spatialConfiguration() { 

    JTSGeometryType jtsGeometryType = new JTSGeometryType(PGGeometryTypeDescriptor.INSTANCE); 
    return PersistenceConfiguration.metadataBuilder().applyBasicType(jtsGeometryType); 
} 

In Auf diese Weise werden alle meine jts Geometrien (es gibt auch die anderen für geolatte Geometrien org.hibernate.spatial.GeolatteGeometryType) korrekt als deklarieren in meinem Datenbankmodell zugeordnet.

hofft, dass diese Ihnen helfen können,

Dario.

+0

Ich habe mich entschieden, im Moment mit Hibernate 4.3 zu bleiben, und habe Ihre Lösung noch nicht getestet. Ich werde irgendwann in naher Zukunft auf 5. migrieren und diese validieren/Antwort akzeptieren. Vielen Dank. –

+0

Mit 5.2.3.Finale Version von Hibernate JTS-Geometrien werden standardmäßig unterstützt, ohne dass eine zusätzliche Konfiguration erforderlich ist. Ich benutze JTS 1.13 Version. –