如果脏的话,Hibernate会保存新的

时间:2012-10-26 16:23:51

标签: java hibernate

当对象脏(被修改)时,有没有办法强制hibernate在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方式或更简单的方式?

2 个答案:

答案 0 :(得分:0)

您可能希望快速阅读Hibernate Interceptor。

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

答案 1 :(得分:0)

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

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