Hibernate Envers : récupérer le contexte de la transaction
Bonjour,
Merci encore à tchize_ pour m'avoir fait découvrir Hibernate Envers (cf ce post :D).
J'ai une petite question à ce sujet. J'ai créé une entité historique personnalisée pour ajouter le login de l'utilisateur et l'action à l'origine de la révision.
J'ai également créé un listener personnalisé.
Dans ce listener, je souhaite récupérer l'entité révisée. Est-ce possible ?
Voici ma classe révision :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Entity
@RevisionEntity(HistorisationListener.class)
public class Historisation extends DefaultRevisionEntity {
private static final long serialVersionUID = -5087706580347772924L;
// Le login de l'utilisateur à l'origine de la modification
private String loginUtilisateur = "";
// Origine de la modification
private String origineHistorique = "";
public String getLoginUtilisateur() {
return loginUtilisateur;
}
public void setLoginUtilisateur(String loginUtilisateur) {
this.loginUtilisateur = loginUtilisateur;
}
public String getOrigineHistorique() {
return origineHistorique;
}
public void setOrigineHistorique(String origine) {
this.origineHistorique = origine;
}
} |
Et ma classe listener :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class HistorisationListener implements RevisionListener {
@Override
public void newRevision(Object historisationEntity) {
SimpleDAO dao = null;
SessionContext sessionContext = null;
// Récupération du dao
dao = JNDILocator.lookupBean(SimpleDAO.class);
// Récupération du contexte
if(null != dao){
sessionContext = dao.getSessionContext();
}
// Mise à jour de l'historique
if(null != sessionContext){
String loginUtilisateur = sessionContext.getCallerPrincipal().getName();
Historisation historisation = (Historisation) historisationEntity;
historisation.setLoginUtilisateur(loginUtilisateur);
}
}
} |