我们使用seam作为Java EE框架。我是从EntityHome继承的控制器。当用户按下“保存”按钮时,我们有一个修改过的实体实例,但是没有刷新这个更改到数据库。
如何在两种状态下检索此实体(第一种 - 数据库状态,第二种用户修改状态)?
我尝试使用enityManager.refresh(object),但它也重置了用户修改的对象状态的所有更改。
我想两个会议,但我想知道,如果有更好的解决方案吗?
答案 0 :(得分:2)
你可以这样做:
使用深拷贝序列化/反序列化克隆当前附加的实体(这意味着您的所有实体都应该是可连续的):
MyEntity clonedObject = org.apache.commons.lang3.SerializationUtils.clone(object);
然后刷新当前附加的对象:
session.refresh(object);
现在您拥有修改后的对象(例如clonedObject
)和原始实体版本(例如object
)。
如果你想合并clonedObject
,你可以这样做:
object = session.merge(clonedObject);