У меня есть следующие две сущности: Изменить и Опубликовать:
@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? Есть ли способ избежать этого?