我有一个用于 Hibernate 托管对象的拦截器。 File 和 Customer 表有一个中间表 (FileCustomer),代表两者之间的多对多关系。这是在 Hibernate 中由 File 类管理的。
@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 更新包含 File 对象的更改属性,一切正常。但是,包含 FileCustomer 对象列表的属性集合具有相同的先前值和当前值。
我错过了什么吗?我如何才能访问集合属性的旧值和新值?
最佳答案
检查这个post它会给您获取两个对象的想法,基本上您可以将 FileCustomer 存储在 preFlush 方法中,因此您可以将 onFlushDirty 中的集合与它进行比较。
关于java - 使用 Hibernate,拦截器接收与当前值和先前值相同的集合对象,如何获取真实的当前值和先前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340167/