У меня проблема с Hibernate - Envers. У меня есть объект домена только с одним проверяемым атрибутом status
, который может быть одним из чисел 0,1,2,3,4,5.
@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
, если номер статуса изменился!
Например: я меняю описание
элемента, выполните обновление, вызвав updateItem
, а затем Envers запишет новую версию в таблицы аудита. Но я не хочу такого поведения.
Чего я хочу: только если значение status
изменится, Envers должен будет записывать записи базы данных в таблицы аудита.
Но как я могу это сделать?
С уважением, Тим.