Включить удаленные данные вместе с другими данными в запрос аудита
Я запрашиваю как следует
AuditQuery si_query = audQueryCreator.forRevisionsOfEntity(SecurityIdentifiers.class, false, false)
.add(AuditEntity.revisionNumber().eq(revision_Id));
Выше Query не содержит удаленных данных (данные с типом ревизии '2').
Если я добавлю следующий код
si_query.add(AuditEntity.revisionType().eq(RevisionType.DEL));
тогда он выбирает только удаленные данные, которые я не хочу.
Я хочу удалить данные вместе со вставленными данными и измененными данными.
Этот запрос приносит все другие данные, кроме удаленных.
Поэтому, пожалуйста, скажите мне, как сделать запрос, чтобы включить удаленные данные тоже.
1 ответ
Проблема в том, что вы используете, особенно последний аргумент, но, возможно, и второй.
Чтобы удалить строки, возвращаемые в результатах, вы должны указать последний аргумент этого метода как true
, Документация по методу java для этого аргумента гласит:
Если true, также будут возвращены версии, в которых объекты были удалены. Дополнительные сущности будут иметь тип ревизии "delete" и не содержат данных (все поля null), кроме поля id.
Моя следующая проблема - ожидаемый тип объекта результата. Это связано со вторым аргументом метода. Документация по методу java для этого аргумента гласит:
Если true, вместо списка трехэлементных массивов будет возвращен список сущностей в результате выполнения этого запроса.
Таким образом, вопрос заключается в том, ожидаете ли вы, что возвращенный список значений будет фактическим проверенным экземпляром сущности или вы ожидаете, что он будет List<Object[]>
где каждая строка массива объекта содержит определенный набор значений.
Указав true
результат List<Object>
но false
его List<Object[]>
,
Если вы используете false
каждая строка будет состоять из:
- Экземпляр сущности.
- Экземпляр объекта ревизии. (номер редакции и дата).
- Тип ревизии (ADD, MOD, DEL).
НТН.