Чтение проверенных отношений с Hibernate Envers

Мы используем Hibernate Envers (4.3.5.Final) с Spring Data Envers (0.2.0.RELEASE).

При следующей настройке объекта я не могу прочитать список C на B (который всегда пуст), когда я запрашиваю конкретную версию объекта A:

@Entity
@Audited
class A {
    private Integer id;
    @ManyToMany
    private List<B> bList = new ArrayList<>();
}

@Entity
@Audited
class B {
    private Integer id;
    @ManyToMany
    private List<C> cList = new ArrayList<>();
}

@Entity
@Audited
class C {
    private Integer id;
}

Создаются следующие таблицы:

A, A_AUD, A_B, A_B_AUD, B_C, B_C_AUD

Я предполагаю, что это на самом деле невозможно, потому что в таблицах аудита отсутствует информация об отношении от A к C, но я не уверен. Можете ли вы подтвердить это или подсказать, как этого добиться?


person s.froehlich    schedule 24.11.2014    source источник


Ответы (1)


Я только что протестировал это с помощью Hibernate Envers 5.2.7, и никаких проблем не было. Возможно, это была старая ошибка, которая была исправлена, или проблема с реализацией Spring Data Envers:

final EntityA a = auditReader.find( EntityA.class, aId, revision );
assertNotNull( a );
assertTrue( !a.getBList().isEmpty() );
for ( EntityB b : a.getBList() ) {
  assertTrue( !b.getCList().isEmpty() );
  for( EntityC c : b.getCList() ) {
    assertNotNull( c );
    System.out.println( c );
  }
}

Вышеупомянутый экземпляр отлично распечатывает мой EntityC экземпляр.

person Naros    schedule 07.02.2017