2017-04-11 42 views
0

我正在使用Envers進行審計,並試圖阻止實體進行審計。如果實體是關係的一部分(如下所示),我希望FK字段保留在相關的審計表(對於Receipt_Audit上的personId)。防止Hibernate關係表被審計

@Entity 
@Audited 
@Table(name = "Receipt") 
public class ReceiptModel { 
    @Valid 
    @ManyToOne 
    @JoinColumn(name = "personId") 
    private PersonModel person; 

    ... 
} 

的PersonModel被配置如下:

@Entity 
@Audited(targetAuditMode = NOT_AUDITED) 
@Table(name = "Person") 
public class PersonModel { 
    ... 
} 

持久一個收據與上述結構工程巨大。但是,當試圖堅持一個人時,由於沒有該實體的審計表存在,所以它就爆炸了。

回答

1

你實際上想要做的是對Receipt內部的實際關係使用@Audited(targetAuditMode=NOT_AUDITED),並且不要將Person標記爲已審覈。

@Entity 
@Audited 
@Table(name = "Receipt") 
public class ReceiptModel { 
    @Valid 
    @ManyToOne 
    @JoinColumn(name = "personId") 
    @Audited(targetAuditMode = NOT_AUDITED) 
    private PersonModel person; 
    ... 
} 

@Entity 
@Table(name = "Person") 
public class PersonModel { 
} 
+0

我在我的代碼中的其他地方出現了一個錯誤,使得它看起來像沒有工作。這絕對是解決方案,雖然,欣賞它的隊友。 –