将自定义数据传递给Dropwizard应用程序中的Hibernate Envers

时间:2016-09-06 19:15:33

标签: java dropwizard hibernate-envers

我有一个使用Hibernate的项目,我想使用Envers进行日志记录,但我需要用户名来进行更改。我有一个Dropwizard application,我正在使用Hibernate envers进行审核。

从文档中,我知道我应该实施RevisionListener并在newRevision()中设置用户名。但是,我无法将用户名传递给CustomRevisionListener。我正在考虑实现会话,但后来我开始认为Hibernate session应该与dropwizard session不同,我想在hibernate会话中传递这些数据,因为我想确保一个不同的用户名不会在'与其他人正在进行的修订混合。

我很感激任何输入。

感谢。

1 个答案:

答案 0 :(得分:1)

您可能希望阅读我的帖子here

总体思路始终如一,因为您希望应用程序存储包含侦听器所需相关信息的ThreadLocal变量,然后访问侦听器中的ThreadLocal变量打回来。值得注意的是,没有线程问题,因为所有Envers都发生在hibernate会话本身的相同线程上下文中。

我的建议是将您的ThreadLocal变量设置为您设置属性的顶级类,以便将来需要扩展或在实现中重用时,您可以轻松地执行此操作。