2013-09-23 14 views
5

Ich versuche Envers zu verwenden, um Auditing für meine Hibernate-Entitäten einzurichten. Aber ich bin immer die Fehlermeldung:Auditing mit Envers und Hibernate Spatial 4

Could not determine type for: geometry, at table: Location_AUD, for columns: [org.hibernate.mapping.Column(geom)]

Hibernate mit der Geometrie Art glücklich ich ohne die Prüfung bin mit, aber Envers scheint Mühe zu haben mit ihm.

Weiß jemand, ob Envers mit Hibernate Spatial 4 arbeitet? Wenn dies der Fall ist, kann möglicherweise jemand das Problem mit meinem Code erkennen.

@Audited 
@Entity 
public class Location { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_LOCATION") 
    @SequenceGenerator(name = "SEQ_LOCATION", sequenceName = "SEQ_LOCATION", allocationSize = 1) 
    Long id; 

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

    ... 
} 

Ich verwende Hibernate 4.2.5 mit HibernateSpatial 4.0.0 M1

+0

Ich habe denselben Fehler mit räumlichen. Bitte sagen Sie mir, wenn Sie eine Antwort finden. Ich werde auch. –

+0

Ich habe noch keine Lösung gefunden. Ich überlege gerade, ob die Envers die Geometriespalte nicht überprüfen und einen benutzerdefinierten Getter erstellen sollen, der die Envires dann auditiert (z. B. einen String des Geom als WKT zurückgibt). – Luke

Antwort

4

ich genau dieses gleiche Problem hatte. Das manuelle Hinzufügen einer Hibernate @TypeDef Annotation für den Geometrietyp scheint für mich funktioniert zu haben. Aus welchem ​​Grund auch immer, Envers greift nicht automatisch auf die GeometryType Zuordnung zu, obwohl der Hibernate-Core dies tut. Also für unsere Anwendung, die ich habe:

@Entity 
@Audited 
@Table(name = "geo_element") 
@ForeignKey(name = "FK_geo_element__id__element") 
@TypeDef(name = "geometry", typeClass = GeometryType.class) 
public class GeoElement extends Element { 

    @Type(type = "geometry") 
    @Column(name = "data") 
    private Point data; 

    //... 
} 

Wir verwenden Hibernate 4.1 mit Hibernate Spatial 4.0-M1 läuft auf der Oberseite des Frühlings 3.1.3 und konfiguriert Spring LocalSessionFactoryBean verwenden.

+0

Danke dafür. Am Ende haben wir die Location-Tabelle (mit der Geometrie) manuell überprüft. Ich werde die Antwort akzeptieren, da es die Lösung zu sein scheint (obwohl ich es nicht getestet habe). – Luke

+1

Ich hatte das gleiche Problem und das reparierte es für mich. – Pythos