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. нуля. Есть ли способ добиться этого?

0 ответов

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