Требование состоит в том, чтобы добавить столбец имени пользователя для каждой записи аудита.Hibernate envers добавить контрольный столбец (имя пользователя)
После многопользовательской игры и прохождения через обратные документы я выяснил, как ее реализовать. Я реализовал это следующим образом:
Реализован ревизионную слушатель:
@Configurable
public class UserRevisionListener implements RevisionListener
{
public void newRevision(Object revisionEntity)
{
UserRevEntity revision = (UserRevEntity) revisionEntity;
String username = "";
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Object principal = auth.getPrincipal();
if (principal != null && principal instanceof DepotUser)
username = ((DepotUser) principal).getUsername();
revision.setUsername(username);
}
}
Создать класс сущностей:
@Entity
@Table(name = "USER_REV_ENTITY")
@RevisionEntity(UserRevisionListener.class)
public class UserRevEntity extends DefaultRevisionEntity
{
private static final long serialVersionUID = 1L;
private String username;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
}
Я называет ссылку, которая имеет пример тот же «Thinking in Software» ,
Аудит по умолчанию работает нормально.
Во-первых, таблица ревизии ревизии с новым столбцом имени пользователя должна автоматически генерироваться (Я думаю!). Его не получают.
Итак, я попытался создать таблицу и добавить отображение таблицы в UserRevEntity. Но не повезло.
Может ли кто-нибудь помочь мне определить проблему?
Спасибо, заранее.