[英]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.