У меня есть аннотация @Audited(withModifiedFlag = true)
для всех свойств Entity, которые необходимо зафиксировать в моей таблице аудита. Он отлично работает во всех случаях, кроме удаления значения. Это означает, что если значение моего столбца установлено из NULL/INT в какое-то ненулевое значение, то соответствующее значение modifiedColumn
устанавливается в 1, но если значение установлено из любого значения INT в NULL, тогда modifiedColumn
устанавливается в 0 (указывает, что не изменено). Я понятия не имею, почему это происходит. Я проверил документы Envers, а также список открытых вопросов Envers и ничего не нашел по этому поводу.
Кстати, я использую Hibernate & Hibernate-Envers 4.1.12. Финальная версия.
Обновление 1
Вот данные моей сущности:
@Entity
@Audited(withModifiedFlag = true)
@AuditTable("AuditLatency")
public class Latency {
@Id
@Column(name = "Id")
private Long id;
@Column(name = "DataCenter1")
private Long dataCenter1;
@Column(name = "DataCenter2")
private Long dataCenter2;
@Column(name = "DataCenter3")
private Long dataCenter3;
@Column(name = "StatusId")
@Type(type = "enum_status_active_inactive_type")
private Status statusId;
//getXXX() & setXXX()
}
Пожалуйста, обратите внимание, что в каждой версии даже один из столбцов обновляется, все остальные флаги установлены на 1 (истина). И для значений NULL флаг устанавливается в 0.
Спасибо за прочтение!