【发布时间】:2009-10-16 16:49:51
【问题描述】:
我的模特:
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)?
谢谢。
【问题讨论】:
标签: hibernate interceptor