如何使用休眠环境避免不必要的审计
Posted
技术标签:
【中文标题】如何使用休眠环境避免不必要的审计【英文标题】:How to avoid unwanted audit using hibernate envers 【发布时间】:2017-11-25 16:54:39 【问题描述】:我有 spring 和 hibernate 项目,因为我为 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)
提前致谢
【问题讨论】:
见***.com/questions/12800540/… 【参考方案1】:这将取决于您用于审计的策略。
DefaultAuditStrategy
应该通过简单地不注册post-insert
事件侦听器来工作。您可以通过注册自己的不注册特定事件处理程序的 envers 集成器来做到这一点。
ValidityAuditStrategy
会有点问题。这里的问题是,当修改行时,该策略会在内部执行一组更新操作,并且这些操作期望初始插入审计行存在,如果不存在则会出错。
您可以使用禁用此检查的自定义策略覆盖此策略,但要了解添加检查是为了检测审计行的数据问题,而不是使用假设。
但这一切的关键是条件审计,有关信息,请参阅参考文档。
【讨论】:
以上是关于如何使用休眠环境避免不必要的审计的主要内容,如果未能解决你的问题,请参考以下文章
如何避免警告“使用集合提取指定的 firstResult/maxResults;在内存中应用!”啥时候使用休眠?