我有当前的问题:我的公司有一个使用 EclipseLink 的 RCP 应用程序,我们使用Views
and Editors
,并且Editors
有一个方法称为isDirty()
该方法,如果当前对象以任何方式发生更改。我isDirty()
做这样的事情
if(model != null) // model is the current object beign edited
return EntityManagerHelper.contains(model) && getRepository().isDirty();
return false;
发生的情况是:我打开一个Editor
(如 ProductEditor),更改一些属性,然后我打开另一个Editor
(如 ClientEditor),第二个编辑器打开为脏(就像它已经更改一样)。然后,如果我编辑客户端并保存,EclipseLink 将客户端和产品保存在同一事务中。似乎 EclipseLink 正在提交整个会话或类似的东西。
我在读这个
工作单元确保客户端在单独的对象事务空间中编辑对象。此功能允许客户端并行执行对象事务。提交事务时,工作单元在数据库中进行任何所需的更改,然后将更改合并到共享的 EclipseLink 会话缓存中。修改后的对象随后可供所有其他用户使用。
可以UnityOfWork
改变这种行为吗?如果是这样,我该如何实现这种模式?
我说得够清楚了吗?让我知道是否有人需要一些代码或更多信息