我有一个项目,我使用Hibernate,我想使用Envers进行日志记录,但我需要用户名来进行更改,因为不正确的配置会导致财务问题,所以客户想知道是谁做的。
项目使用Java EE,但只是使用servts,无论如何,当envers保存审计实体时,无论如何都要从会话中获取用户?
记录的用户留在会话中,所以我需要从那里检索它或者在另一个地方保存使用另一种我不知道的策略。
我搜索了很多,但刚刚找到解决方案时使用像spring,vraptor等框架
我需要一个没有框架的解决方案,因为我无法将项目移植到这个框架,至少现在不是。
提前谢谢!答案 0 :(得分:2)
最简单的解决方案可能是在请求开始时使用ThreadLocal
中的过滤器设置会话,并在请求完成时取消设置。
然后,您可以使用RevisionListener
从本地线程获取会话,并在自定义修订实体上设置用户名。