休眠Envers:跟踪一个一对多关系的拥有方修改(Hibernate Envers : track

2019-07-29 11:56发布

我有两个被审计单位,A和B.实体A持有实体B(注释为一一对多的关系)的集合。 当插入的新实例到数据库中,A和B的所有行同一版本的(假设修订1)。 然后,对A,其只会影响实体B的实例的更新(级联型是合并)。 因此,更新后,实体A仍处于修订版1,而B的实体是在第2次修订(在审核表中的新MOD条目)。

问题是,当我取回的所有修订,我希望得到两个版本的回报:一个用于创建,一个B的集合拥有的修改,我可以在多对多的情况下获得这种行为,但我可以“弄不明白的工作方式相同与一对多的关系。

(我使用Hibernate的3.6.10决赛)

Answer 1:

我通过我的等效你一个实体的加入一个隐藏LASTUPDATED日期字段解决我的问题。

@Entity
public class A {
    private Date lastModified;
    @OneToMany(mappedBy = "a", cascade = CascadeType.ALL )
    private List<B> blist;
    public void touch(){
        lastModified=new Date();
    }
}

在相关实体(如你B场),我增加了以下内容:

public class B {
    @ManyToOne
    private A a; 

    @PreUpdate
    public void ensureParentUpdated(){
        if(a!=null){
            a.touch();
        }
    }
}

这确保了修订加入A每当修订版将添加到B.



文章来源: Hibernate Envers : track revisions in the owning side of a OneToMany relation