Hibernate - Enversに問題があります。私は、0,1,2,3,4,5のいずれかの数字をとることができるstatus
の属性を1つだけ持つドメインオブジェクトを持っています。値が変更された場合に限り、Hibernate - Envers - >属性の監査/バージョン化
@Entity
public class Item {
...
@Audited
private int status;
... other variables, setter/getter, ...
}
EnversとHibernateのすべてが機能しています。新しいItemオブジェクトを作成し、それをデータベースに追加すると、行がItem_AUD
データベーステーブルに挿入されます。
しかし、私はそれを更新することに問題があります。 HibernateのDAO実装での私の更新は次のようになります。
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 (?, ?, ?, ?)
しかし、問題は、私だけに行を挿入することを、次のとおりです。すべてのアップデートで
public void updateItem(Item i) {
SessionFactory sessionFac = HibernateUtility.getSessionFactory();
Session s = sessionFac.getCurrentSession();
Transaction trans = s.beginTransaction();
s.update(i);
s.flush();
trans.commit();
}
、これは私のコンソールに印刷されていますステータス番号が変更された場合は、REVINFO
とItem_AUD
!
たとえば、項目のdescription
を変更し、updateItem
を呼び出して更新を実行してから、Enversは監査テーブルに新しいリビジョンを書き込みます。しかし、私はこの行動を望んでいません。
必要なもの:status
の値が変更された場合のみ、Enversはデータベースエントリを監査テーブルに書き込む必要があります。
しかし、どうすればいいですか?
最高のお付き合い