2013-07-30 23 views
1

修訂我有一個審計模型,並在它裏面一列,我有定期更新。 Bu我不想爲此列的每個更改創建修訂版。不創造特定的列變化

是否有不創造任何修正配置即使物業X的改變?

+0

當然可以,當您指定的字段,Envers只是審覈更改其標有'@ Audited'性能。 –

+0

我不想排除試聽中的色譜柱。我只想忽略,並且在該列已更改時不創建修訂。 你確定你的方法可以解決我的問題嗎? – fjallstorm

回答

0

唯一出的現成的方式做你問什麼是貫徹落實有條件審覈

文檔中描述的條件審計方法要求用戶提供自己的事件偵聽器並添加各種if檢查來操作是否對行進行審計。

我已經證明使用類級別的註解來控制條件審覈HHH-11326在這個新的JIRA的一個新概念。

的想法很簡單,是不是有事件偵聽器的註冊用戶渣土,每一個實體可以用一個新的註釋指向一類可以作爲一種手段,以驗證該事件偵聽器是否應執行被標註其工作或不通過簡單地返回真/假。

在特定情況下,你的聽衆可能會是這個樣子:

public class MyEntityListener implements AuditEventListener { 
    public boolean doPostInsert(Object[] state) { 
    // we always insert the new row regardless. 
    return true; 
    } 

    public boolean doPostUpdate(Object[] oldState, Object[] newState) { 
    // checks state changes and if only toggle-changed, return false. 
    return !isToggleOnlyChange(oldState, newState); 
    } 

    public boolean doPreRemove(Object[] oldState) { 
    return true; 
    } 
} 

的想法是,更新過程中,如果只轉換欄改變,返回false會影響聽者跳過審計。

+0

有什麼辦法可以在5.x版本的hibernate中獲得這種行爲?除了Integration事件(它似乎是一個全局級別的偵聽器)之外,它還允許您逐個級別地應用審計事件偵聽器。 –