Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate envers:RelationTargetAuditMode.NOT_AUDITED vs@NotAudited_Java_Hibernate_Audit_Hibernate Envers - Fatal编程技术网

Java Hibernate envers:RelationTargetAuditMode.NOT_AUDITED vs@NotAudited

Java Hibernate envers:RelationTargetAuditMode.NOT_AUDITED vs@NotAudited,java,hibernate,audit,hibernate-envers,Java,Hibernate,Audit,Hibernate Envers,我试图审核一个实体,但我不想审核它的关系。如果我将@Audited(targetAuditMode=RelationTargetAuditMode.NOT_Audited)放在@ManyTone关系中,这是有效的,我没有任何异常,但是当我尝试在@onetomany中使用定义了参数mappedby的同一注释时,我有一个异常,表明我必须审核其他实体 例如: @Table(name = "OWNERS") @Entity @EntityListeners(AuditingEntityListener.

我试图审核一个实体,但我不想审核它的关系。如果我将@Audited(targetAuditMode=RelationTargetAuditMode.NOT_Audited)放在@ManyTone关系中,这是有效的,我没有任何异常,但是当我尝试在@onetomany中使用定义了参数mappedby的同一注释时,我有一个异常,表明我必须审核其他实体

例如:

@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>();
...
}
@Table(name=“OWNERS”)
@实体
@EntityListeners(AuditingEntityListener.class)
@审计
公共类所有者{
...
@已审核(targetAuditMode=关系targetAuditMode.未审核)
@manytone(fetch=FetchType.LAZY)
私人用户;
...
@已审核(targetAuditMode=关系targetAuditMode.未审核)
@OneToMany(cascade=CascadeType.ALL,mappedBy=“owner”)
private Set pets=new HashSet();
...
}

嗯,我认为您有两个选择:

  • 实际审计实体
    Pet
    (如适用)

  • 使用注释
    @NotAudited
    代替
    @Audited(targetAuditMode=RelationTargetAuditMode.NOT\u Audited)
    。想想看,
    Owner
    的审核表不必持久化与
    Pet
    相关的。如果是,请使用选项1

  • 希望有帮助

    当您使用@Audited(targetAuditMode=RelationTargetAuditMode.NOT\u Audited)时,您告诉hibernate不要审核该实体,而是审核该关系,以便hibernate保存被引用实体的id。这就是为什么Pet必须是@Audited实体的原因

    如果您根本不想存储关系,则需要使用@NotAudited

    检查这个