如何使用 hibernate envers 避免不必要的审计
How to avoid unwanted audit using hibernate envers
我有 spring 和休眠项目,我为 Table 配置了审计并且它工作正常但我的问题是我想在创建新记录时避免审计但在进行更新时它应该在我的代码下面审计
实体:
@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 集成器来完成此操作,该集成器未注册该特定事件处理程序。
ValidityAuditStrategy
会有点问题。这里的问题是,当一行被修改时,该策略在内部执行一组更新操作,这些操作期望初始插入审计行存在,如果不存在则会出错。
您可以使用禁用此检查的自定义策略覆盖此策略,但要了解添加该检查是为了检测审计行的数据问题,而不是使用假设。
但这一切的关键是条件审计,有关信息,请参阅参考文档。
我有 spring 和休眠项目,我为 Table 配置了审计并且它工作正常但我的问题是我想在创建新记录时避免审计但在进行更新时它应该在我的代码下面审计
实体:
@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 集成器来完成此操作,该集成器未注册该特定事件处理程序。
ValidityAuditStrategy
会有点问题。这里的问题是,当一行被修改时,该策略在内部执行一组更新操作,这些操作期望初始插入审计行存在,如果不存在则会出错。
您可以使用禁用此检查的自定义策略覆盖此策略,但要了解添加该检查是为了检测审计行的数据问题,而不是使用假设。
但这一切的关键是条件审计,有关信息,请参阅参考文档。