Hibernate包含了如何更新删除记录

时间:2013-11-21 15:36:09

标签: hibernate

我正在开发一个使用hibernate envers的项目,以便使用审计数据库。我可以在审计数据库中成功查看审计记录。我使用的实体有两列,其中包含记录器用户的id和该实体的更新程序用户的ID。

我可以在审计数据库中看到删除的审计记录,但我希望删除后更新updater用户ID,但更新程序用户ID没有更新。

我的问题是如何使用在我的数据库中删除该记录的用户ID来创建删除记录的更新程序ID。这是否可以通过配置?如果不可能,这怎么可能?

问候。

2 个答案:

答案 0 :(得分:0)

经过几次测试后,我意识到hibernate正在使用AuditEventListener。

在扩展审计事件监听器并覆盖metod AuditEventListener类的onPostDelete之后,我可以做我想做的事。删除审计记录可以通过在此metod中更新来更新。

此致

答案 1 :(得分:-1)

您是否看过Envers手册?

http://docs.jboss.org/envers/docs/#revisionlog

相当直截了当。您只需要一种机制来在监听器中获取登录用户的句柄。

@Entity
@RevisionEntity(ExampleListener.class)
public class ExampleRevEntity extends DefaultRevisionEntity {
    private String username;

    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
}



public class ExampleListener implements RevisionListener {
    public void newRevision(Object revisionEntity) {
        ExampleRevEntity exampleRevEntity = (ExampleRevEntity) revisionEntity;

        User user = //get logged in user from some context.
        exampleRevEntity.setUsername(user.getUsername());
    }
}