Hibernate-Enversに問題があります。0、1、2、3、4、5のいずれかになり得る監査済み属性が1つしかないドメインオブジェクトがありますstatus
。
@Entity
public class Item {
...
@Audited
private int status;
... other variables, setter/getter, ...
}
現在、EnversとHibernateのすべてが機能しています。Item_AUD
新しいItemオブジェクトを作成してデータベースに追加すると、データベーステーブルに行が挿入されます。
しかし今、私はそれを更新することに問題があります。HibernateDao実装での私の更新は次のようになります。
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はデータベースエントリを監査テーブルに書き込む必要があります。
しかし、どうすればこれを行うことができますか?
よろしく、ティム。