Включить удаленные данные вместе с другими данными в запрос аудита

Я запрашиваю как следует

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каждая строка будет состоять из:

  1. Экземпляр сущности.
  2. Экземпляр объекта ревизии. (номер редакции и дата).
  3. Тип ревизии (ADD, MOD, DEL).

НТН.

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