3

我有一个经过审计的模型,其中有一列我必须定期更新。但我不想为该列的每次更改创建修订。

即使属性 X 已更改,是否有任何配置不创建修订?

4

1 回答 1

1

执行您要求的唯一开箱即用的方法是实施Conditional Auditing

文档中描述的条件审计方法要求用户提供自己的事件侦听器并添加各种 if-checks 来控制是否审计行。

我在这个新的 JIRA 中记录了一个使用类级别注释来控制条件审计HHH-11326的新概念。

这个想法很简单,而不是让用户使用事件监听器注册,每个实体都可以用一个指向一个类的新注释进行注释,该类可以用作验证事件监听器是否应该执行其工作的方法简单地返回真/假。

在您的特定情况下,您的侦听器可能如下所示:

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;
  }
}

这个想法是,在更新期间,如果只有切换字段发生变化,返回 false 会影响侦听器跳过审计。

于 2016-12-09T02:20:32.980 回答