Единственный готовый способ сделать то, что вы просите, реализовать Условный аудит.
Подход условного аудита, описанный в документации, требует, чтобы пользователи предоставляли свои собственные прослушиватели событий и добавляли ваши различные проверки if, чтобы управлять ли аудитом строк или нет.
Я зарегистрировал новую концепцию с использованием аннотаций на уровне классов для управления условным аудитом HHH-11326 в этой новой JIRA.
Идея проста, что вместо того, чтобы иметь пользовательскую галочку с регистрацией слушателей событий, каждый объект может быть аннотирован с новой аннотацией, которая указывает на класс, который может служить средством проверки того, должен ли этот прослушиватель событий выполнять его задание или нет, просто вернув true/false.
В вашем конкретном случае, слушатель может выглядеть примерно так:
public class MyEntityListener implements AuditEventListener {
public boolean doPostInsert(Object[] state) {
// we always insert the new row regardless.
return true;
}
public boolean doPostUpdate(Object[] oldState, Object[] newState) {
// checks state changes and if only toggle-changed, return false.
return !isToggleOnlyChange(oldState, newState);
}
public boolean doPreRemove(Object[] oldState) {
return true;
}
}
Идея заключается в том, что во время обновления, если только поле переключения изменяется, возвращая ложное будет влиять на слушателя, чтобы пропустить аудит.
Разумеется, при указании полей вы можете просто проверять изменения свойств, отмеченных символом '@ Audited'. –
Я не хочу исключать столбцы из прослушивания. Я просто хочу игнорировать и не создавать ревизию, когда этот столбец был изменен. Вы уверены, что ваш метод может решить мою проблему? – fjallstorm