Аудит с помощью Envers и Hibernate Spatial 4

Я пытаюсь использовать Envers для настройки аудита в моих объектах Hibernate. Однако я получаю сообщение об ошибке:

Не удалось определить тип для: geometry, в таблице: Location_AUD, для столбцов: [org.hibernate.mapping.Column (geom)]

Hibernate доволен типом геометрии, который я использую без одитинга, но у Энверса, похоже, с этим проблемы.

Кто-нибудь знает, работает ли 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 ответ

Решение

У меня была точно такая же проблема. Добавление Hibernate вручную @TypeDef аннотация для типа геометрии, похоже, сработала для меня. По какой бы то ни было причине, Энверс не подхватывает автоматически GeometryType отображение, хотя ядро ​​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 с Hibernate Spatial 4.0-M1, работающим поверх Spring 3.1.3 и настроенного с использованием Spring LocalSessionFactoryBean.

Другие вопросы по тегам