【发布时间】:2012-08-02 22:07:42
【问题描述】:
有人可以解释一下为什么以下方法不起作用吗?
我有一个域对象,其中包含多个包含复杂 POJO 的瞬态字段。保存 comain 对象后,我想将这些对象序列化为 XML(使用 Xstream),并将它们存储到我的数据库中的 PersistentMap 中。
所以我在我的域对象上创建了一个@PrePersist/@PreUpdate 方法,并在这些方法中序列化值并将它们放入域对象的持久映射中。当调用persist时,我可以看到值被序列化,地图被更新,但实际保存的值是原始值,而不是更新后的值。
我的假设是,由于更改发生在 PrePersist/PreUpdate 方法中,底层持久性提供程序(在我的情况下为 Hibernate 3)在调用 PrePersist/PreUpdate 方法之前确定域中更改的字段,因此当实际保存完成后,原始值永远不会更新。
谁能告诉我如何使这项工作的线索?除了 PrePersist/PreUpdate 挂钩之外,我还可以使用其他机制吗?
任何指针将不胜感激。
谢谢
【问题讨论】: