使用Envers和Hibernate Spatial 4进行审计

时间:2013-09-23 02:50:25

标签: java hibernate hibernate-envers auditing hibernate-spatial

我正在尝试使用Envers在我的Hibernate实体上设置审核。但是,我收到了错误:

  

无法确定类型:几何,在表格:Location_AUD,列:[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和HibernateSpatial 4.0.0 M1

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。手动为几何类型添加Hibernate @TypeDef注释似乎对我有用。无论出于何种原因,即使Hibernate核心存在,envers也不会自动获取GeometryType映射。所以对于我们的应用程序,我有:

@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和Hibernate Spatial 4.0-M1在Spring 3.1.3之上运行,并使用Spring的LocalSessionFactoryBean进行配置。