2012-10-26 107 views
0

有没有办法迫使休眠保存一个对象的新实例(新标识符)在saveOrUpdate当一个对象脏(被修改)?这是可能通过配置或拦截器?我有三个实体:休眠保存新的如果脏

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

基本上我想C到永远持有B的快照创建时(C)和保存,而不是直接引用由A.引用的B的实例

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

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

回答

0

尝试给休眠DefaultSaveOrUpdateListener读取时,该监听器(配置时)将被称为做保存对象的所有繁重的任务,需要保存或更新了这个监听器,它确定物体的。

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

+0

我该如何确定实体是否因事件对象而变脏? – user979051

+0

有一个叫做isDirty()的方法,试试。 –

+0

我在文档中没有看到这样的方法.. – user979051