Hibernate Envers: как получить информацию о ревизии_типа для данной ревизии и данного класса сущностей

Я использую Hibernate envers 3.6.3.Final. Я могу проверить таблицу, и я вижу, что таблица _audit заполнена данными revision_number, revision_type и объектами. Я создаю страницу истории, на которой хочу отображать все записи ревизий, чтобы, когда пользователь щелкает идентификатор ревизии, я мог отображать данные объекта вместе с типом ревизии, т. е. он добавлялся, удалялся или изменялся. Я пытаюсь использовать AuditQuery, но не знаю, как получить информацию revision_type для данной версии и данного класса объектов. Можно ли сделать в AuditQuery ?

Я могу получить информацию «RevisionType», написав запрос Hibernate. Но я хочу повторно использовать для этого любой существующий фреймворк API. По-другому я передал разные «RevisionType» в качестве критериев для AuditQuery (т.е. множественный запрос для DELETE, INSERT и UPDATE) и проверил, получаю ли я какой-либо результат, но это неэффективный способ.


person Rabi    schedule 07.09.2012    source источник
comment
@Boris Stitnicky Есть ли причина, по которой это голосование?   -  person Rabi    schedule 10.09.2012
comment
Потому что вопросы не должны быть написаны как рабочие задания. Другими словами, что вы пробовали?   -  person Boris Stitnicky    schedule 10.09.2012


Ответы (1)


Чего это сейчас стоит. У меня была та же проблема, и я смог получить тип ревизии с помощью метода AuditQueryCreator#forRevisionsOfEntity следующим образом:

List<Object[]> resultList = auditReader.createQuery()
    .forRevisionsOfEntity(entityClass, entityClass.getName(), false, true)
    .add(AuditEntity.revisionNumber().eq(revision)).getResultList();

Это возвращает список триплетов массива изменений, касающихся указанной ревизии. Триплет массива содержит объект, информацию об объекте и, наконец, тип ревизии.

Убедитесь, что для аргумента selectEntitiesOnly функции AuditQueryCreator#forRevisionsOfEntity задано значение false. Если задано значение true, метод будет возвращать только список сущностных объектов.

Здесь используется Hibernate Envers версии 4.2.2.

person thoredge    schedule 01.10.2013