2013-09-23 115 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

相关问题