問題摘要:僅當使用Hibernate Envers更改特定字段時才需要對數據庫行進行快照。基於字段級別值更改的休眠Entent
用到的技術:Spring Boot
,Spring Data JPA
,Hibernate Envers 5.2.10
當前的行爲:目前我有休眠Envers運行和IT審計所對每個對象進行表的改變。
步驟1:用戶表:當新用戶註冊,最初ACCOUNT_STATUS將EMAIL_VERIFICATION_PENDING
id user_name email_id phone_number account_status
-------------------------------------------------------------------------
101 test_user [email protected] 123-123-1234 EMAIL_VERIFICATION_PENDING
用戶審計表
id REV REVTYPE user_name email_id phone_number account_status
-----------------------------------------------------------------------------------
1 1 0 test_user [email protected] 123-123-1234 EMAIL_VERIFICATION_PENDING
步驟2:用戶表當電子郵件驗證已完成,則account_status已更改爲PHONE_VERIFICATION_PENDING
id user_name email_id phone_number account_status
-------------------------------------------------------------------------
101 test_user [email protected] 123-123-1234 PHONE_VERIFICATION_PENDING
用戶審計表看起來像
id REV REVTYPE user_name email_id phone_number account_status
-----------------------------------------------------------------------------------
1 1 0 test_user [email protected] 123-123-1234 EMAIL_VERIFICATION_PENDING
2 2 1 test_user [email protected] 123-123-1234 PHONE_VERIFICATION_PENDING
第3步:用戶表:用戶改變自己的手機號碼
id user_name email_id phone_number account_status
-------------------------------------------------------------------------
101 test_user [email protected] 111-222-3333 PHONE_VERIFICATION_PENDING
現在用戶審計表看起來像
id REV REVTYPE user_name email_id phone_number account_status
-----------------------------------------------------------------------------------
1 1 0 test_user [email protected] 123-123-1234 EMAIL_VERIFICATION_PENDING
2 2 1 test_user [email protected] 123-123-1234 PHONE_VERIFICATION_PENDING
3 3 1 test_user [email protected] 111-222-3333 PHONE_VERIFICATION_PENDING
步驟4:用戶表:當電話驗證完成,則ACCOUNT_STATUS改變爲ACTIVE
id user_name email_id phone_number account_status
-------------------------------------------------------------------------
101 test_user [email protected] 123-123-1234 ACTIVE
和用戶審覈表看起來像
id REV REVTYPE user_name email_id phone_number account_status
-----------------------------------------------------------------------------------
1 1 0 test_user [email protected] 123-123-1234 EMAIL_VERIFICATION_PENDING
2 2 1 test_user [email protected] 123-123-1234 PHONE_VERIFICATION_PENDING
3 3 1 test_user [email protected] 111-222-3333 PHONE_VERIFICATION_PENDING
4 4 1 test_user [email protected] 111-222-3333 ACTIVE
說明:每當用戶表中的任何更改,Hibernate Envers創建新修訂並在審計表中添加條目
試圖實現:當account_status發生任何更改時,Hiberate Envers會創建新修訂版。 基本上,我想從審計表中避免版本號3。這意味着我不想審計的電話號碼更改
有沒有什麼辦法可以控制Hibernate Envers只審計特定字段級別的變化(如account_status)?
誰能幫我實現這一目標的最佳途徑。