我对我的 JPA 实体有一个简单的审计要求:保留创建和最后修改日期和作者。作者应该是当前登录的用户。
我想在基类或 JPA 拦截器(没有额外的框架)上使用@PrePersist
和注释来实现这个。@PreUpdate
但是,在这两种情况下,我都需要一种方法来访问当前登录的用户,该用户存储在 HttpSession 中。
如何从我的基实体类或 JPA 拦截器上的方法访问这些信息?
是否有任何最佳实践或任何经过测试的方法来实现这一目标?
我在想,也许添加一个网络拦截器,对于每个请求,将登录的用户对象放入全局可访问的 ThreadLocal 中(例如在 Spring 单例服务中),这样就可以从任何地方查找它......
这听起来是个好主意吗?
欢迎任何建议!
编辑:在此处找到类似的问题(仅在通过右侧的建议发布我自己的问题后才找到):在 JPA 实体中自动设置 createdBy 和 updatedBy
结论似乎朝着 ThreadLocal 的方向发展……不过,欢迎任何反馈!