2016-07-20 4 views
0

С помощью Hibernate Envers вы создаете соответствующую таблицу аудита с суффиксом «_AUD» для каждого из ваших объектов JPA, а затем вы можете запросить с помощью AuditReader.Аудит с использованием спящего режима: как выполнить запрос Когда идентификатор не является «id»

Это AuditReader предполагает, что идентификатор сущности является идентификатор и что он имеет GetId() геттер. В моем случае все мои объекты имеют именованные по-разному идентификаторы, такие как userId и accountId и т. Д. ... все с различными даннымиТипы.

Как создать шаблон, который уменьшает шаблонный код, чтобы извлекать данные истории аудита по id, не зная имя поля идентификатора?

+0

Как AuditReader полагает, что идентификатор объекта является ** id **? – Naros

ответ

0

Вот что AuditEntity.id() для :)

AuditQuery query = getAuditReader() 
    .forRevisionsOfEntity(MyEntity.class. true, false) 
    .add(AuditEntity.id().eq(myEntityClassId)); 

Вам не нужно знать, что свойство карты на имущество идентификатор вашего предприятия, поскольку Envers будет обрабатывать все необходимые равенства/проверки неравенства между типами и сопоставление свойств за кулисами.

0

какой?

getAuditReader().createQuery().forRevisionsOfEntity(MyEntity.class, false, false).add(AuditEntity.property("accountId").eq(12)); 
Смежные вопросы