2017-04-11 43 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

我在我的代码中的其他地方出现了一个错误,使得它看起来像没有工作。这绝对是解决方案,虽然,欣赏它的队友。 –