我有一个使用Hibernate
的项目,我想使用Envers
进行日志记录,但我需要用户名来进行更改。我有一个Dropwizard application
,我正在使用Hibernate envers
进行审核。
从文档中,我知道我应该实施RevisionListener
并在newRevision()
中设置用户名。但是,我无法将用户名传递给CustomRevisionListener
。我正在考虑实现会话,但后来我开始认为Hibernate session
应该与dropwizard session
不同,我想在hibernate会话中传递这些数据,因为我想确保一个不同的用户名不会在'与其他人正在进行的修订混合。
我很感激任何输入。
感谢。
答案 0 :(得分:1)
您可能希望阅读我的帖子here。
总体思路始终如一,因为您希望应用程序存储包含侦听器所需相关信息的ThreadLocal
变量,然后访问侦听器中的ThreadLocal
变量打回来。值得注意的是,没有线程问题,因为所有Envers都发生在hibernate会话本身的相同线程上下文中。
我的建议是将您的ThreadLocal
变量设置为您设置属性的顶级类,以便将来需要扩展或在实现中重用时,您可以轻松地执行此操作。