繁体   English   中英

根据条件插入以休眠审核表

[英]Insert to hibernate audit table on condition

我正在使用休眠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事件侦听器类,并添加逻辑以检查必要的实体类型和值,并确定是否调用超类来审核更新。

不幸的是,上述方法对新手来说有点麻烦,如果您不熟悉Hibernate ORM和Envers,我当然不建议您这样做。

HHH-11326中有一些关于条件审核的想法,这是为Envers 6.0初步计划的,您可以在其中基于通过注释绑定到实体的挂钩来影响审核。

如果您决定继续前进并在5.x中扩展侦听器,请注意应该始终允许实体的INSERT发生。 如果您使用ValidityAuditStrategy ,这将变得非常重要,因为UPDATE希望表中存在INSERT修订版类型,否则该策略会断言。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM