5

Sto tentando di utilizzare Envers per impostare il controllo sulle entità di sospensione. Comunque, sto ottenendo l'errore:Controllo con Envers e Hibernate Spatial 4

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

Hibernate è felice con il tipo di geometria che sto usando senza la revisione, ma Envers sembra avere problemi con esso.

Qualcuno sa se Envers funziona con Hibernate Spatial 4? Se lo fa, forse qualcuno può individuare il problema con il mio codice.

@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; 

    ... 
} 

Sto usando Hibernate 4.2.5 con HibernateSpatial 4.0.0 M1

+0

Ho lo stesso errore con lo spazio. Per favore dimmi se trovi la risposta. Lo farò anche io. –

+0

Non ho ancora trovato una soluzione. Sto pensando di dire a envers di non controllare la colonna Geometry e di creare un getter personalizzato che investa i controlli (es. Restituire una stringa del geom come WKT). – Luke

risposta

4

ho avuto questo stesso problema. L'aggiunta manuale di un'annotazione Hibernate @TypeDef per il tipo di geometria sembra aver funzionato per me. Per qualsiasi motivo, envers non preleva automaticamente la mappatura GeometryType anche se il core Hibernate lo fa. Così per la nostra applicazione, ho:

@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; 

    //... 
} 

Stiamo usando Hibernate 4.1 con Hibernate spaziale 4.0-M1 che gira sopra a primavera 3.1.3 e configurato usando LocalSessionFactoryBean di primavera.

+0

Grazie per quello. Abbiamo finito per controllare manualmente la tabella Location (con la geometria). Accetterò la risposta in quanto sembra essere la soluzione (anche se non l'ho ancora testata). – Luke

+1

Ho avuto lo stesso problema e questo lo ha risolto per me. – Pythos

Problemi correlati