0

当对象脏(已修改)时,有没有办法强制休眠在 saveOrUpdate 上保存对象的新实例(新标识符)?这可以通过配置或拦截器实现吗?我有三个实体:

Entity A (has B)
Entity B
Entity C (has B)
Entity B can only be updated through A

基本上,我希望 C 在创建和保存 (C) 时始终保存 B 的快照,而不是直接引用 A 引用的 B 的实例。

B 应该是可修改的,A 应该指向 B 的最新版本。

我可以通过实现 equals 方法手动执行此操作,在调用 saveOrUpdate() 之前检查是否相等并在必要时取消 B 的 id 字段。Hibernate 中是否有内置方式或更简单的方式?

4

2 回答 2

0

您可能想快速阅读一下 Hibernate Interceptors。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html

于 2012-10-26T16:27:57.223 回答
0

尝试给 Hibernate DefaultSaveOrUpdateListener一个读取,这个监听器(当配置时)将被调用来完成保存对象的所有繁重工作,它的这个监听器确定一个对象需要被保存或更新。

您决定为脏对象保存/更新/创建新对象的逻辑可以在这里完成。

于 2012-10-28T06:11:22.307 回答