Question

Je suis déjà en utilisant Hibernate Envers à des entités d'audit qui sont mis à jour par un utilisateur via l'interface utilisateur; cependant, j'ai aussi des emplois asynchrones en cours d'exécution en arrière-plan et je voudrais vérifier ceux aussi bien à l'aide Envers. Maintenant, pour l'interface utilisateur, je voie qui HttpRequest fait le changement qui me donne la date, l'utilisateur, session, etc. Pour les travaux d'arrière-plan, je voudrais suivre la date à laquelle le travail a été exécuté, ainsi que le travail exact qui a modifié (classe d'emploi).

Est-il possible d'installer 2 entités d'audit, 1 pour l'interface utilisateur, et 1 pour les modifications du système?

Walter

Était-ce utile?

La solution

Je ne l'ai pas testé ceci, mais je fais simplement ce qui suit:

@RevisionListener(SystemRevisionListener.class)
@Entity
public class SystemRevision extends AbstractRevision
{
   @Column(nullable = false, updatable = false)
   protected QuartzTriggerHandle job;

   @Column(nullable = false, updatable = false)
   protected Class jobClass;

   ...
}



@RevisionListener(WebRevisionListener.class)
@Entity
public class WebRevision extends AbstractRevision
{
   @ManyToOne(optional = false)
   @JoinColumn(nullable = false, updatable = false)
   protected HttpRequest httpRequest;

   ...
}

Ensuite, dans chaque auditeur, je fais tout ce que je dois faire pour définir ces propriétés. Je voudrais maintenant être en mesure de suivre comment une entité telle que modifiée, si un utilisateur a fait le changement (et ce en faire la demande est liée à), ou si le système a changé l'entité, quel travail est responsable du changement. Je stockera plus de propriétés dans le SystemRevision que cela, très probablement les arguments et nom de la méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top