但是,如果您實施自己的解決方案是可能的。我對審計日誌業務需求也有同樣的需求,所以設計了我自己的AuditField批註,並將其應用於審計日誌記錄。
下面是一個實體bean - 站點中的示例。
@AuditField(exclude={EntityActionType.DELETE})
@Column(name = "site_code", nullable = false)
private String siteCode;
因此,該示例指示'siteCode'是審計日誌的字段,但DELETE操作除外。 (EntityActionType是一個枚舉,它包含CRUD操作。)
此外,EntityListener擁有這部分代碼。
@PostPersist
public void created(Site pEntity) {
log(pEntity, EntityActionType.CREATE);
}
@PreUpdate
public void updated(Site pEntity) {
log(pEntity, EntityActionType.UPDATE);
}
@PreRemove
public void deleted(Site pEntity) {
log(pEntity, EntityActionType.DELETE);
}
現在是什麼它在日誌中做的()是,以數字的哪些領域對審計日誌,什麼自定義操作可選擇參與。
但是,還有一個需要考慮的問題。 如果將註釋放在另一個實體變量上,那麼必須記錄實體的哪些字段? (即鏈式日誌記錄)
無論是在實體中還是以其他方式使用@AuditField註釋什麼都是您的選擇。對於我的情況,我們決定只記錄實體ID,它是數據庫表的一個PK。但是,假設業務可以改變,我想讓它變得靈活。因此,所有實體都必須實現auditValue()方法,該方法來自基礎實體類,並且默認實現(可覆蓋)將返回其ID。
這就是我所懷疑的,謝謝你的回答! – Petter 2012-07-18 07:41:51
不客氣。 – 2012-07-18 07:42:27