Hibernate EnVers中的@NotAudited和RelationTargetAuditMode.NOT_AUDITED有什么区别?

Hibernate EnVers中的@NotAudited和RelationTargetAuditMode.NOT_AUDITED有什么区别?,第1张

Hibernate EnVers中的@NotAudited和RelationTargetAuditMode.NOT_AUDITED有什么区别?

如果您根本不想审核值/关系,请在字段上使用NotAudited。我相信您可以在具有或没有诸如OneToMany,ManyToMany或Column之类的关系的字段上使用它。如果要审核值,请在关系字段上使用RelationTargetAuditMode.NOT_AUDITED,而不要审核关系另一侧的实体。例如,您要审核ID
/键值,而不要审核相关表。

您还可以将RelationTargetAuditMode应用于整个类,我认为这只是针对该类中的所有关系不审核另一端。这让我感到困惑,因为我错误地使用了此批注来表示不要审核下面的实体,这不是什么意思。如果您不希望对实体进行审核,则根本不需要在实体类上使用审核注释。在引用该实体的其他审核实体上,您必须对关系字段使用NotAudited或RelationTargetAuditMode.NOT_AUDITED。

官方文档不是关于此主题的好文章(http://docs.jboss.org/hibernate/orm/4.2/devguide/en-
US/html/ch15.html
),甚至根本没有提到NotAudited。

在过去的项目中,我需要审核一组非常特定的表而不是其他表,因此我需要使用这些注释。我与某些审计实体之间的某些非审计实体具有外键关系。我经常使用RelationTargetAuditMode.NOT_AUDITED注释,以便至少审核外键值/
ID,而不是审核关系另一端的实体。如果没有此批注,则会遇到运行时异常,ENVERS会尝试将未审核实体的审核记录插入到审核表中,并且该表将不存在。我将NotAudited注释用于一些我不需要审核的ManyToMany联接表关系,并且在已审核实体表本身上没有要记录的内容(没有外键ID
/值)。

哦,是的-文档没有说明如果您同时使用两者(不确定哪一个具有优先权)会发生什么,但是我不认为打算在给定的字段上同时使用两者。使用一个或另一个。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5124957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存