2012-10-20 114 views
0

我正在使用hibernate,並且我有一張表,它不斷由登錄到Web應用程序的各種用戶更新。我想在該表中添加「上次更新時間」和「上次更新時間」列。對於時間戳位,我可以簡單地使用觸發器並從oracle獲取時間/日期,但對於「上次更新者」,應該從應用程序層獲取數據。跟蹤行的「上次更新者」

一種方法是明確識別所有情況下,該實體正在被修改,並添加一個entity.setLastUpdatedBy(用戶名)或類似的東西,但這意味着我必須識別所有這樣的場景,其中該實體可能會被修改。

有沒有其他辦法可以實現這一目標?

ps:我的問題與this problem驚人相似,但我找不到答案。問題中提到的鏈接不起作用。

回答

1

如果你是一個Spring和JPA的用戶,正好有你需要的東西:2.6. Auditing

大多數應用程序都需要某種形式的可審計性的實體創建或修改,由誰來當跟蹤。

所有你需要做的是:

  • 實現Auditable接口,它暴露了修改列

  • 實現簡單Auditor界面,讓框架知道誰是當前登錄:

    public interface AuditorAware<T, ID extends Serializable> { 
    
        T getCurrentAuditor(); 
    }