将非审核实体与审核实体映射

时间:2020-10-09 10:26:05

标签: java hibernate hibernate-envers

我有一个@Entity Parent,它与Child实体具有一对多的关系。

使用org.hibernate.envers.Audited审核父实体。

@Entity
@EntityListeners(AuditingEntityListener.class)
@Audited
@Table(name = "PARENT")
public class Parent extends AuditEntity implements Serializable {

  @OneToMany(
          mappedBy = "parent",
          fetch = FetchType.LAZY,
          cascade = CascadeType.ALL
  )
  private Set<Child> childSet;
    
}

Child实体只是一个字典表,不需要审核。

@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "CHILD")
public class Child extends AuditEntity implements Serializable {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parent_id", nullable = false)
    @JsonIgnore
    private Parent parent;

}

如果我按原样执行此代码,则会抛出Caused by: org.hibernate.MappingException: An audited relation from Parent to a not audited entity Child

我在网上发现了两个选择:要么在@NotAudited关系上使用@OneToMany,要么将Child实体类标记为@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)

但是我不确定最适合我的要求。

请提出建议。

0 个答案:

没有答案