不为特定列更改创建修订

时间:2013-07-30 13:11:35

标签: java hibernate hibernate-envers

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

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

1 个答案:

答案 0 :(得分:0)

实现您所要求的唯一开箱即用的方法是实施条件审核

文档中描述的条件审计方法要求用户提供自己的事件侦听器,并添加各种if-check以操纵是否审计行。

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

这个想法很简单,不是让用户捣乱事件监听器注册,而是每个实体都可以使用新的注释进行注释,该注释指向一个类,该类可以作为验证该事件监听器是否应该执行其工作的手段或者不是简单地返回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;
  }
}

我们的想法是,在更新期间,如果仅更改了切换字段,则返回false会影响侦听器跳过审核。