2013-01-04 76 views
0

我已經實現休眠Envers的解決方案。休眠Envers如何記錄額外的審計數據如表名被審計

我創造我自己的類來存儲系統的用戶名擴展RevisionLister:

import org.hibernate.envers.RevisionListener; 

    public class CustomRevisionListener implements RevisionListener { 

     public void newRevision(Object revisionEntity) { 
      CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity; 
      revision.setUsername(System.getProperty("user.name")); // for testing 

     } 

    } 

這並不工作,但我想要做的,是讓一個更全面的記錄,這將包括表名被審計。

有誰知道我怎麼能做到這一點。我無法找到任何有關記錄表名的文檔?

回答

1

我不知道,如果Envers可以跟蹤被審計開箱記錄的表名,但我知道它可以跟蹤哪些可以通過three different ways

2

被啓用實體名稱,而不是見example 15.2 in the envers doc如何獲得修改的實體類(es)。然後稍微改變代碼從實體類獲得表名(假設你使用的實體類的JPA/Hibernate的註解):

public class CustomEntityTrackingRevisionListener 
      implements EntityTrackingRevisionListener { 
    @Override 
    public void entityChanged(Class entityClass, String entityName, 
           Serializable entityId, RevisionType revisionType, 
           Object revisionEntity) { 
     // either javax.persistence.Table or org.hibernate.annotations.Table 
     Table tableAnnotation = entityClass.getAnnotation(Table.class); 
     if (tableAnnotation != null) 
      String tableName = tableAnnotation.getName(); 
      ((CustomTrackingRevisionEntity)revisionEntity).addTable(tableName); 
     } 
    } 
+0

曾經有過嗎? http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

相關問題