В спящем режиме я могу получить все изменения, внесенные в сущность, используя следующий фрагмент кода:
AuditQuery aq = auditReader.createQuery().forRevisionsOfEntityWithChanges(DummyEntity.class, false);
Но есть ли способ получить все изменения, сделанные конкретным пользователем для всех сущностей?
Я использую следующую сущность для хранения информации о редакции:
@RevisionEntity(UserRevisionListener.class)
@Entity(name = "env_audit_envers_info")
public class AuditEnversInfo extends DefaultRevisionEntity {
private static final long serialVersionUID = -7604731515258123883L;
@Column(name = "user_id")
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
И записи к этой модели будут добавляться при каждом изменении, используя следующий слушатель:
public class UserRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
AuditEnversInfo auditEnversInfo = (AuditEnversInfo) revisionEntity;
Optional<Authentication> auth = Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication());
String username = auth.isPresent() ? auth.get().getName() : "anonymoususer@email.com";
auditEnversInfo.setUserId(username);
}
}