Hibernate Audit Issue
Я использую Hibernate Audit для ведения истории аудита для следующего класса,
@Entity
@Audited
Class B{
}
@Entity
@Audited
Class C{
}
@Entity
@Audited
class A{
B b;
C c;
/*all getter and setters will be given*/
}
Поэтому, когда я обновляю или удаляю объект класса A, он автоматически добавляет проверенную ревизию для классов A, B и C. Поэтому, чтобы получить подробную информацию о конкретной ревизии класса A. Я использую метод поиска AuditReader, подобный этому
getReader().find(A.class, id, revId);
Если аудиты присутствуют для всех трех объектов A, B и C. Он вернет соответствующие данные в этой ревизии аудита. Но если класс B еще не рассматривается как объект аудита, т. Е. Я создал объект аудита классов A и C с самого начала, добавив аннотацию @Audited, а класс B является обычной сущностью без аннотации @Audited, всякий раз, когда я обновляю объект класса A, это будет автоматически записывает ревизии аудита для классов A и C, поскольку класс B не является объектом аудита, поэтому в нем не будет таблицы B_Aud, и ни одно из изменений не будет записано в таблице аудита. Теперь после сохранения некоторых данных, подобных этой, я сделаю класс B объектом аудита, добавив аннотацию @Audited. Теперь, если мы сохраним изменения объекта класса A, он будет записывать изменения объектов A, B и C в таблицу аудита. Но если я попытаюсь получить сущность класса A при определенной ревизии, когда класс B не был сделан как проверяемая сущность, он выдаст исключение, говоря
org.hibernate.ObjectNotFoundException: No row with the given identifier exists
Теперь я хочу получить объект класса A в указанной ревизии, и если аудит объекта B отсутствует, и при извлечении объекта класса A присутствуют только данные аудита A и C, тогда я хочу установить последние данные версии аудита для B, присутствующие в таблице B_Aud. нуля. Есть ли способ добиться этого?