【发布时间】:2013-12-17 05:22:46
【问题描述】:
我有带有updatedAt 和updatedBy 审计字段的实体。我只想在实体状态发生更改时设置此字段。因此,对于脏检查,我可以使用 Hibernate EmptyInterceptor 接口(覆盖 onFlushDirty() 方法)或 JPA 侦听器(@PreUpdate)。但是如何在拦截器或侦听器中获取当前的userId?我想到了两个解决方案:
将
userId传递给DAO 层,因此我可以创建自定义拦截器,并将其传递给构造函数userId,然后在创建新的Session时使用此拦截器。将当前
userId设置为 public-staticThreadLocal变量,这样我就可以从任何地方访问它。
但我认为这两种方法都很丑陋。那么可能存在一些更优雅的方法来解决我的问题吗?
请注意,我不能使用Envers 库(它不符合我们的项目要求)。
谢谢。
【问题讨论】: