gpt4 book ai didi

java - 根据条件插入到 hibernate 审计表

转载 作者:行者123 更新时间:2023-12-02 12:03:23 25 4
gpt4 key购买 nike

我正在使用 hibernate envers 来审核我的实体。我有具有下一个字段的实体:

public class Settings   

@Id
@Column(length = 80)
private String key;


@NotNull
@Column(length = 1200)
private String value;

@Version
@Column(columnDefinition = "numeric")
private Integer version;
}

它包含键值对。该表中的某些字段会自动更新。问题是:是否可以根据“key”属性的值将记录插入或不插入到 _AUDIT 表中?例子:我的表中有记录:

|KEY          |VALUE     |VERSION
_________________________________
|laskCheckDate|12-01-2017|0
|numberOfsmth |3 |0

如果 numberOfsmth 更新/删除,我想将记录插入到 _AUDIT 表中,但如果更新 laskCheckDate 则不插入记录。

最佳答案

您需要做的是扩展EnversPostUpdateEventListenerImpl事件监听器类并添加逻辑来检查必要的实体类型和值,并决定是否调用父类(super class)来审核更新或不。

不幸的是,上述方法对于新手用户来说有点干扰,如果您不是非常熟悉 Hibernate ORM 和 Envers,我当然不建议您这样做。

HHH-11326中有一些关于条件审计的想法这是 Envers 6.0 的暂定计划,您可以根据通过注释与实体绑定(bind)的 Hook 来影响审核。

如果您决定在 5.x 中继续前进并扩展监听器,请注意您应该始终允许实体发生 INSERT。如果您使用 ValidityAuditStrategy,这一点就变得极其重要,因为 UPDATE 期望表中存在 INSERT 修订类型,否则策略断言。

如果您想要控制的只是UPDATE,那么无论您采用哪种策略,这对您来说都不是问题。

关于java - 根据条件插入到 hibernate 审计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com