Как получить Rev ID сразу после аудита при использовании Hibernate Envers - PullRequest
0 голосов
/ 12 августа 2011

Я использую Hibernate Envers для аудита.Работает нормально.Тем не менее, я пытаюсь получить идентификатор Rev сразу после изменения данных.У меня 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?

public class TestClass {
    updateAddress(address);

    // how to get rev id here?
}

Спасибо!

1 Ответ

1 голос
/ 15 августа 2011

ОК, я решил проблему самостоятельно. Просто добавьте еще один атрибут, например revId в классе CustomRevisionEntity. Это добавит новый столбец revid в таблицу customrevisionentity. А в классе CustomRevisionListener добавьте что-то вроде revision.setRevId(RevMapper.getRevId());, RevMapper - это класс, содержащий статический атрибут revId, getter и setter. Поэтому в TestClass вам нужно установить revId, используя RevMapper.setRevId(id);

Выше приведено простое объяснение, и вам нужно рассмотреть, как генерируется revId и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...