2011-08-12 11 views
0

私はHibernate Enversを監査に使用しています。それはうまく動作します。しかし、私はデータを変更した直後にrev idを取得しようとしています。 REV IDを取得する方法を、Hibernate Enversを使用している場合、監査直後にrev idを取得する方法

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 
    } 
} 

ので、例えば以下のようなアドレスを更新するとき:

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:私は以下のようにCustomRevisionEntityがありますか?

public class TestClass { 
    updateAddress(address); 

    // how to get rev id here? 
} 

ありがとう!

答えて

1

OK、私は自分でこの問題を解決しました。たとえば、別の属性を追加するだけです。 CustomRevisionEntityクラスのrevId。 customrevisionentityテーブルに新しい列revidを追加します。また、CustomRevisionListenerクラスにrevision.setRevId(RevMapper.getRevId());のようなものを追加します。RevMapperは、静的属性revId、getter、およびsetterを含むクラスです。だから、TestClassをして、あなたはRevMapper.setRevId(id);

以上を使用してREVIDを設定する必要があるだけの簡単な説明です、あなたはREVIDが生成される方法を検討する必要がある、など

関連する問題