使用Hibernate,Interceptor接收与当前和之前相同的集合对象,如何获取实际的当前值和先前值?

时间:2010-02-26 07:51:48

标签: java hibernate

我有一个Hibernate托管对象的拦截器。 File和Customer表有一个中间表(FileCustomer),表示两者之间的多对多关系。这是通过File类在Hibernate中管理的。

@OneToMany(mappedBy = "file", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private List<FileCustomer> fileCustomers= new ArrayList<FileCustomer>();

我们更改了File对象,包括替换了一些FileCustomer对象(但没有更改底层的Customer对象)。

当调用onFlushDirty时,文件更新包含File对象的更改属性,一切正常。但是,包含FileCustomer对象列表的属性集合具有相同的先前值和当前值。

我错过了什么吗?我如何能够访问集合属性的先前值和新值?

1 个答案:

答案 0 :(得分:2)

检查这个post它会给你两个对象的想法,基本上你可以在preFlush方法中存储FileCustomer,所以你将onFlushDirty中的集合与它进行比较。