如果您不希望根據價值/關係進行審覈,請在字段中使用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 /值)。
哦是啊 - 文檔沒有說如果你同時使用(不知道哪一個有優先權)會發生什麼,但我不認爲同時在一個給定的字段上同時使用。使用一個或另一個。
關於RelationTargetAuditMode.NOT_AUDITED註釋的非常有用的解釋。官方文檔在某些方面非常糟糕......謝謝! – 2017-01-16 09:27:00