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

Passing custom data to Hibernate Envers in Dropwizard application

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

从文档中,我知道我应该实施 RevisionListener 并在 newRevision() 中设置用户名。但是,我无法将用户名传递给 CustomRevisionListener。我正在考虑实施会话,但后来我开始认为 Hibernate session 应该不同于 dropwizard session 并且我想在休眠会话中传递此数据,因为我想确保不同的用户名不会混合与别人正在做的修订。

如有任何意见,我将不胜感激。

谢谢。

您可能想阅读我的 post

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

我的建议是让你的 ThreadLocal 变量成为你设置属性的顶级 class ,这样如果将来需要扩展它或在实现中重用它,你可以很容易地这样做。