当对象脏(被修改)时,有没有办法强制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方式或更简单的方式?
答案 0 :(得分:0)
您可能希望快速阅读Hibernate Interceptor。
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html
答案 1 :(得分:0)
尝试给Hibernate DefaultSaveOrUpdateListener一个读取,这个监听器(在配置时)将被调用以完成保存对象的所有繁重工作,其确定对象的侦听器需要保存或更新。 / p>
您可以在此处完成决定为脏对象保存/更新/创建新对象的逻辑。