4
我有一個Hibernate的問題 - Envers。我有一個只有一個審計屬性status
的域對象,它可以是數字0,1,2,3,4,5之一。休眠 - Envers - >審計/版本的屬性,但只有當值改變
@Entity
public class Item {
...
@Audited
private int status;
... other variables, setter/getter, ...
}
現在,Envers和Hibernate中的所有東西都在工作。創建一個新的Item對象並將其添加到數據庫中的一行插入到Item_AUD
數據庫表中。
但現在我有更新它的問題。我在Hibernate DAO實現更新的樣子:
public void updateItem(Item i) {
SessionFactory sessionFac = HibernateUtility.getSessionFactory();
Session s = sessionFac.getCurrentSession();
Transaction trans = s.beginTransaction();
s.update(i);
s.flush();
trans.commit();
}
在每次更新,這是印刷我的控制檯上:
Hibernate: update Item set amount=?, description=?, status=? where id=?
Hibernate: insert into REVINFO (REVTSTMP) values (?)
Hibernate: insert into Item_AUD (REVTYPE, status, id, REV) values (?, ?, ?, ?)
但問題是,我只想要插入行如果狀態編號已更改,則爲REVINFO
和Item_AUD
!
例如:我更改該項目的description
,執行更新,調用updateItem
,然後Envers將新修訂版寫入審計表。但我不想要這種行爲。
我想要什麼:只有當status
的值被更改時,Envers才應該將數據庫條目寫入審計表。
但我該怎麼做?
最好的問候,蒂姆。