我的模型:
public class Father {
Set<Son> sons = new HashSet<Son>();
String name = null;
Date lastSonModifyDate = null;
// ... other fields and setters/getters
}
public class Son {
Father father = null;
String name = null;
Date lastModifyDate = null;
// ... other fields and setters/getters
}
用例:
- 在 DB 中有一个
Father
与Son
对象关联的对象(bidir)。 - 从数据库父亲加载。
- 更新父亲的姓名字段。
- 更新儿子的姓名字段。
- 坚持父亲。
我的拦截器首先检测到父亲更新(onFlushDirty)。然后为儿子执行 onFlushDirty。在这种情况下,我更新了 son.lastModifyDate和 Father.lastSonModifyDate。
执行结束时,所有更新都将保留,但 Father.lastSonModifyDate 除外。我认为这是因为父亲在会话中并且在儿子之前已经更新,所以这个实体覆盖了 onFlushDirty 方法中对儿子实体所做的更改。
我怎样才能达到我的目标(从儿子拦截器中设置父亲的 lastSonModifyDate)?
谢谢。