【问题标题】:How to get rev id right after auditing when using Hibernate Envers使用 Hibernate Envers 时如何在审核后立即获得 rev id
【发布时间】:2011-10-25 19:02:47
【问题描述】:

我正在使用 Hibernate Envers 进行审计。它工作正常。但是,我尝试在修改数据后立即获取 rev id。我有 CustomRevisionEntity 如下:

import javax.persistence.Entity; 
import org.hibernate.envers.DefaultRevisionEntity;
import org.hibernate.envers.RevisionEntity;

@Entity
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity extends DefaultRevisionEntity {

  private static final long serialVersionUID = 3775550420286576001L;

  private String username;

  public String getUsername() {
      return username;
  }

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

和CustomRevisionListener:

import org.golf.repository.domain.entity.CustomRevisionEntity;
import org.hibernate.envers.RevisionListener;

public class CustomRevisionListener implements RevisionListener {

    public void newRevision(Object revisionEntity) {
        CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
        revision.setUsername("username"); // For testing
    }  
}

那么,例如像下面这样更新地址时,如何获取 rev id?

public class TestClass {
    updateAddress(address);

    // how to get rev id here?
}

谢谢!

【问题讨论】:

    标签: java audit hibernate-envers


    【解决方案1】:

    好的,我自己解决了这个问题。只需添加另一个属性,例如CustomRevisionEntity 类中的 revId。它将在 customrevisionentity 表中添加一个新列 revid。而在CustomRevisionListener 类中,添加类似revision.setRevId(RevMapper.getRevId()); 的东西,RevMapper 是包含静态属性revId、getter 和setter 的类。所以在TestClass中,需要使用RevMapper.setRevId(id);设置revId

    以上只是简单的说明,需要考虑revId是如何产生的等等。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2016-11-24
      • 2019-07-27
      • 1970-01-01
      • 2023-03-24
      • 2018-04-18
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多