5

我正在尝试使用 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

4

1 回答 1

4

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

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

于 2013-11-25T19:53:07.630 回答