我有两个经过审计的实体 A 和 B。实体 A 拥有实体 B 的集合(注释为一对多关系)。将 A 的新实例插入数据库时,A 和 B 的所有行都处于同一修订版(假设为修订版 1)。然后,A 上有更新,仅影响实体 B 的实例(级联类型为合并)。因此,更新后,实体 A 仍处于修订版 1,而实体 B 处于修订版 2(审核表中的新 MOD 条目)。
问题是,当我检索 A 的所有修订时,我希望得到 2 个修订作为回报:一个用于创建,一个用于修改 B 的所属集合。
在 ManyToMany 的情况下我可以得到这种行为,但我不能让它以与 OneToMany 关系相同的方式工作。
(我使用的是 Hibernate 3.6.10-Final)
我通过在 A 实体的等效项上添加隐藏的 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();
}
}
}
这确保每当将修订版本添加到 B 时,修订版本也会添加到 A。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)