2013-09-23 171 views
5

我試圖使用Envers在我的Hibernate實體上設置審計。然而,我發現了錯誤:Envers和Hibernate Spatial 4審計

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

Hibernate是幸福與我使用未經審計的幾何類型,但Envers似乎與它有麻煩。

有誰知道Envers是否可以使用Hibernate Spatial 4?如果是這樣,也許有人可以用我的代碼發現問題。

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

    ... 
} 

我使用Hibernate 4.2.5與4.0.0 HibernateSpatial M1

+0

我有與空間相同的錯誤。請告訴我,如果你找到答案。我也會。 –

+0

我還沒有找到解決方案。我正在考慮告訴envers不要審計Geometry列並創建一個自定義的getter來envres然後審計(例如返回一個字符串作爲WKT)。 – Luke

回答

4

我在此完全相同的問題。爲幾何類型手動添加Hibernate @TypeDef註釋似乎已適用於我。無論出於何種原因,即使Hibernate核心確實不會自動選擇映射。因此,對於我們的應用程序,我有:

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

    //... 
} 

我們使用Hibernate 4.1與春3.1.3上運行,並使用Spring的LocalSessionFactoryBean可以配置Hibernate的空間4.0-M1。

+0

謝謝你。我們最終手動審覈了Location表(帶有幾何圖形)。我會接受答案,因爲它似乎是解決方案(儘管我還沒有測試過)。 – Luke

+1

我有同樣的問題,這爲我解決了它。 – Pythos

相關問題