Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何使用hibernate envers避免不必要的审核_Spring_Hibernate_Jpa_Audit_Hibernate Envers - Fatal编程技术网

Spring 如何使用hibernate envers避免不必要的审核

Spring 如何使用hibernate envers避免不必要的审核,spring,hibernate,jpa,audit,hibernate-envers,Spring,Hibernate,Jpa,Audit,Hibernate Envers,我有一个spring和hibernate项目,我为表配置了审计,它工作正常,但我的问题是我想在创建新记录时避免审计,但在进行更新时,它应该在我的代码下面进行审计 实体: @Entity @Table(name = "building") @Audited public class BuildingClass extends CommonTableFields { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @C

我有一个spring和hibernate项目,我为表配置了审计,它工作正常,但我的问题是我想在创建新记录时避免审计,但在进行更新时,它应该在我的代码下面进行审计

实体:

@Entity
@Table(name = "building")
@Audited
public class BuildingClass extends CommonTableFields {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "BID")
   @JsonProperty
   private long id;

    @JsonProperty
    private String username;

    @JsonProperty
    private double count;
    //getters and setters
}
实施: //这里我不想审核

@Override   
public void save(BuildingClass buildingclass) {
       repo.save(buildingclass)
}
//这里我要审计

@Override   
public void update(BuildingClass buildingclass) {
       repo.save(buildingclass)
}

提前感谢

这将取决于您使用的审计策略

DefaultAuditStrategy
应该通过不注册
post-insert
事件侦听器来工作。您可以通过注册自己的envers integrator来实现这一点,该integrator不注册特定的事件处理程序

ValidityAuditStrategy
会有点问题。这里的问题是,当一行被修改时,该策略在内部执行一组更新操作,这些操作期望初始insert audit行存在,如果初始insert audit行不存在,则会出现故障

您可以使用禁用此检查的自定义策略来覆盖此策略,但请理解,添加此检查是为了检测审核行中的数据问题,而不是使用假设

但所有这些的关键是条件审计,有关信息,请参阅参考文档。

请参阅