@NotAudited
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@OneToMany(mappedBy = "booking")
@OrderBy("bookingOrder")
private List<CustomerBooking> customerBookingList = new LinkedList<CustomerBooking>();
为什么同时使用两者?两者都用好还是一个就足够了?
当您根本不希望审核值/关系时,请在字段上使用 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 http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch15.html),甚至根本没有提到 NotAudited。
在我过去的项目中,我需要审核一组非常特定的表而不是其他表,因此我需要使用这些注释。我与一些经过审计的实体与一些未经审计的实体有外键关系。我经常使用 RelationTargetAuditMode.NOT_AUDITED 注释,以便至少审核外键值/ID,而不是关系另一端的实体。如果没有此注释,您将收到运行时异常,其中 ENVERS 尝试将审核记录插入到非审核实体的审核表中,并且该表将不存在。我对一些不需要审核的 ManyToMany 连接表关系使用 NotAudited 注释,并且审核的实体表本身没有任何内容可记录(没有外键 ID/值)。
哦,是的 - 文档没有说明如果您同时使用两者会发生什么(不确定哪一个具有优先级),但我不认为在给定字段上同时使用两者是有意的。使用其中之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)