Fala galera! Estou com um problema no Hibernate Envers (auditoria). Tenho uma tabela do banco que armazena todos as alterações nas tabelas auditadas pelo Hibernate. Esta tabela está mapeada pela classe AuditoriaRevisao. Pois é, toda alteração no banco é feito um insert nesta tabela com o usuário logado na aplicação. Estou utilizando CDI e na classe AuditoriaListener, que armazena o usuário logado, não consigo injetar o usuário logado na aplicação. Segue classes:
Classe AuditoriaRevisao
@Entity
@Table(name="auditoriaRevisao")
@RevisionEntity(AuditoriaListener.class)
public class AuditoriaRevisao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = IDENTITY)
@RevisionNumber
private int idRevisao;
@RevisionTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date dataRevisao;
private String login;
// getters e setters
}
Classe AuditoriaListener
@Named
public class AuditoriaListener implements RevisionListener, Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UsuarioLogadoBean usuarioLogadoBean;
@Override
public void newRevision(Object object) {
//Usuario usuario = usuarioLogadoBean.getUsuario();
AuditoriaRevisao auditoriaRevisao = (AuditoriaRevisao) object;
auditoriaRevisao.setLogin("teste");
}
}
Classe UsuarioLogadoBean
@Named
@SessionScoped
public class UsuarioLogadoBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private HttpSession session;
private Usuario usuario;
public void logar(Usuario usuario) {
this.usuario = usuario;
}
public void deslogar() {
this.usuario = null;
}
public boolean isLogado() {
return usuario != null;
}
public void logoff() {
session.invalidate();
}
public Usuario getUsuario() {
return usuario;
}
}
Como puderam verificar, até botei a anotação @Named na classe AuditoriaListener com a intensão de injetar o UsuarioLogadoBean, mas não obtive sucesso.
Alguém pode me ajudar?