Остановить просмотр Hibernate Envers в таблице _AUD при использовании RelationTargetAuditMode.NOT_AUDITED - PullRequest
0 голосов
/ 24 октября 2019

У меня есть следующие две сущности: Изменить и Опубликовать:

@Audited
@Entity(name = "CHANGE")
public class Change{

    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "FROM_POST", referencedColumnName = "ID")
    private Post fromPost;

   // more fields here
}
@Audited
@Entity(name = "POST")
public class Post extends AuditedBaseEntity {
   // a number of fields but no bidirectional relationship with Change entity
}

В моей базе данных уже есть таблицы CHANGE_AUD и POST_AUD. Сущность Post проверяется, но в данном конкретном сценарии (отношения между Change и Post) я не заинтересован в проверке Post, поэтому я использую @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED).

Все поля, помеченные как @Audited в сущности Change, корректно получаютпроверяется, и новая запись создается в базе данных, когда что-то меняется.

Проблема в том, что при попытке получить ревизии для моего объекта Change я получаю следующее исключение:

Unable to find uk.gov.copfs.corp.apps.data.source.domain.posts.Post with id 1234

На самом деле ID сообщения отсутствует в таблице POST_AUD, так как (a) в Post ничего не изменилось и (b) я специально использую @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED).

Способ, которым я пытаюсь получить ревизии, используя следующее:

AuditQuery query = reader.createQuery()
                .forRevisionsOfEntity(Change.class, true, true)
                .add(AuditEntity.id().eq(id));

Почему ENVERS пытается заглянуть в таблицу POST_AUD для записи Post? Есть ли способ избежать этого?

...