2013-07-30 5 views
1

У меня есть модель, которая проверена, и в ней есть столбец, который я должен периодически обновлять. Bu Я не хочу создавать ревизию для каждого изменения этого столбца.не создавать ревизии для конкретного изменения столбца

Есть ли какая-либо конфигурация для того, чтобы не создавать ревизию, даже если свойство X было изменено?

+0

Разумеется, при указании полей вы можете просто проверять изменения свойств, отмеченных символом '@ Audited'. –

+0

Я не хочу исключать столбцы из прослушивания. Я просто хочу игнорировать и не создавать ревизию, когда этот столбец был изменен. Вы уверены, что ваш метод может решить мою проблему? – fjallstorm

ответ

0

Единственный готовый способ сделать то, что вы просите, реализовать Условный аудит.

Подход условного аудита, описанный в документации, требует, чтобы пользователи предоставляли свои собственные прослушиватели событий и добавляли ваши различные проверки 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; 
    } 
} 

Идея заключается в том, что во время обновления, если только поле переключения изменяется, возвращая ложное будет влиять на слушателя, чтобы пропустить аудит.

+0

Есть ли способ получить это поведение в версии спящего режима 5.x? Помимо функции Integration (которая, как представляется, является слушателем на глобальном уровне, она позволяет применять аудиторский прослушиватель событий в классе по отдельности. –

Смежные вопросы