我们正在我们的数据库审计项目中实施 Envers,但遇到了障碍。我们不知道如何确定是哪个用户进行了更改。我能找到的所有示例都使用 Seam 及其 Component.getInstance 技术。
- 玻璃鱼 3.1.2.2
- 莫哈拉 2.1.13
- 休眠 4.1.6.Final
这是我们的自定义修订实体
@Entity
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;
private String login;
getters/setters...
}
以及自定义修订侦听器
public class CustomRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
CustomRevisionEntity rev = (CustomRevisionEntity) revisionEntity;
//how do we get the FacesContext/remote user?
rev.setLogin("unknown");
}
}
我们已经尝试过注入和作用域,但没有成功,我们还尝试了这个ClassLoader 解决方案,我发现似乎是类似的情况,但 getCurrentInstance() 仍然为空;
谢谢你的帮助!