当前位置: 首页 > 面试题库 >

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

马高谊
2023-03-14
问题内容
@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
),甚至根本没有提到NotAudited。

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

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



 类似资料:
  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa

  • 问题内容: JavaScript中的&和&&有什么区别? 示例代码: 似乎&&是一个逻辑上的“和”,如果两个都为true,则总是为我提供第二个值。 但是什么是&? (顺便说一下,&&在Python中似乎是“ and”;&在Python中似乎是&。) 问题答案: 是按位AND 该运算符期望 两个数字 并重新调整一个 数字。 如果它们不是数字,则将其强制转换为数字。 注意: 在Javascript中,

  • 问题内容: 我正在从Spring 2.5迁移到Spring 3。 他们介绍了一些黑魔法。预期仅在servlet配置文件中声明。 在Spring 2.5中,我刚刚使用,并且在分发服务器servlet配置XML中声明了标记,并使用了要扫描的基本包。 所以,我不知道是什么样的区别,并在servlet配置标签和我有什么可以消除在Spring3配置文件? 问题答案: 声明一般注释,比如支持,等等。 声明了注

  • 问题内容: 我是Go编程语言的新手。 我注意到Go中有一些奇怪的地方:我认为它在Python中使用并替代了,但是当我在Go中使用时,它也是可行的。 和之间有什么区别? 问题答案: 是分配。有关Go中分配的更多信息:分配 和在变量声明中使用时的细微差别。 Go中变量声明的一般形式是: 上面的声明创建一个特定类型的变量,为其添加名称,并设置其初始值。 无论是或可以省略,但不能同时使用。 例如: 被称为

  • 问题内容: 。*是零个或多个次数的任何字符。我试图找到以元音开头的单词,我用过 它给了我所有以元音开头的单词。当我这样做时,也会得到相同的结果。 现在,我正在寻找以元音结尾的单词。我做了 它没有给出任何结果,但是当我这样做时却给出了有效的结果。请解释两者含义上的差异。谢谢 问题答案: 看起来,在Oracle11中,和模式(之前没有任何内容)会生成零宽度的匹配项。所以与被捕获组包含零宽度的图案或分别

  • 问题内容: 简单的问题: php中的’和’有什么区别?什么时候应该使用两者之一? 问题答案: 基本上,单引号字符串是纯文本,几乎没有特殊情况,而双引号字符串具有变量插值(例如)以及转义序列,例如“ \n”(换行符)。 您可以在PHP的手册中了解有关字符串的更多信息。