![](/img/trans.png)
[英]How to use Hibernate Envers (@Audited) without Hibernate generating any tables
[英]How to access FacesContext in Hibernate Envers without Seam?
我们正在项目中实施Envers进行数据库审核,但遇到了麻烦。 我们不知道如何确定进行更改的用户。 我可以找到的所有示例都使用Seam及其Component.getInstance技术。
这是我们的自定义修订实体
@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()仍然为null。
谢谢你的帮助!
adamw是正确的,FacesContext.getCurrentInstance()确实可以在自定义的RevisionListener中工作。
我们有一个javax.servlet.Filter实现,尝试实现doFilter()方法中的事务,这是由于任何原因导致FacesContext.getCurrentInstance()在RevisionListener中返回null。 昨天,出于不同的原因,我们从web.xml中删除了该文件,当我今天早晨尝试不使用getCurrentInstance()时,一切正常。
感谢大家的答复,也许有一天会有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.