Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate envers: RelationTargetAuditMode.NOT_AUDITED vs @NotAudited

I try to audit an entity but I don't want to audit its relationships. If I put @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) in @ManyToOne relations, this works and I don't have any exception, but when I try to use the same annotation in a @onetomany with the param mappedby defined, I have an exception that says me that I have to audit the other entity.

Example:

@Table(name = "OWNERS")
@Entity
@EntityListeners(AuditingEntityListener.class)
@Audited
public class Owner {
...
  @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
  @ManyToOne(fetch=FetchType.LAZY)
  private User user;
...
  @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
  @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner" )
  private Set<Pet> pets = new HashSet<Pet>();
...
}
like image 887
Manuel Avatar asked Sep 14 '25 08:09

Manuel


1 Answers

When you use @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) you are telling hibernate not to audit this entity but audit the relation so you hibernate will save the id of the referenced entity. Thats why Pet must be an @Audited entity.

If you do not want to store the relation at all you need to use @NotAudited

Check this Whats the difference between @NotAudited and RelationTargetAuditMode.NOT_AUDITED in Hibernate EnVers?

like image 122
Ricardo Vila Avatar answered Sep 16 '25 23:09

Ricardo Vila