我正在使用Hibernate Envers作爲我的修訂歷史記錄。 這是我的表設置:如何在使用envers時保存其他屬性
CREATE TABLE EPIC (
epicid SERIAL NOT NULL,
accountid BIGINT NOT NULL,
description TEXT NOT NULL UNIQUE,
epicowner TEXT NOT NULL,
PRIMARY KEY(epicid)
);
CREATE TABLE EPIC_AUD(
epicid BIGINT NOT NULL ,
REV BIGINT NOT NULL,
accountid BIGINT,
description TEXT,
epicowner TEXT,
REVTYPE BIGINT,
PRIMARY KEY(epicid,REV)
);
目前,當我做出改變它不僅節省了複合主鍵的值和修改類型。既然我也想記錄刪除某個實體的用戶,我也想保存這個值。這是我用來刪除實體的代碼。
@Override
public boolean deleteItem(Epic epicFromFrontend) {
transactionBegin();
Epic epicToRemove = getEntityManager().find(Epic.class, epicFromFrontend.getEpicid());
epicToRemove.setAccountid(epicFromFrontend.getAccountid());
getEntityManager().remove(epicToRemove);
return transactionEnd();
}
其實我有2個問題:
- 如何保存ACCOUNTID太
- 或者是它也許更聰明,更好地保存所有數據。所以我刪除後在EPIC_AUD表中沒有空字段。
像http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch15.html#d0e5519這樣的東西可能會幫助你達到你想要的東西,如果我正確理解你的話。 – N4zroth
感謝您的回覆,但那是我已經找到的。不過,我不是那麼喜歡這個,因爲那意味着我只需要做一些簡單的事情就可以創建很多代碼。如果沒有像「@Auditthisattribute」或@Auditthisfield –
任何註釋你老老實實找什麼是跟蹤在RevisionEntity水平相關的東西,並在域實體級別不跟蹤值我不知道。這使您可以輕鬆地跟蹤刪除用戶,而無需任何侵入性代碼來操作您的域模型。 – Naros