我有一个带有子类的Parent类,如下所示
class Parent{
private child;
}
Class Child {........ some variables; }
当在UI上进行任何更改时,我们正在合并oldObject和newObject。 现在,在使用hibernate保存数据时,它将数据传递到DAO层,但保存数据。
我需要使用合并功能吗?
答案 0 :(得分:0)
为清楚起见,我们假设您在数据代码中执行以下操作:
public void updateMyEntity(TheEntity oldEntity) {
final Session session = openSession();
try {
session.getTransaction().begin();
TheEntity attachedEntity = session.find( TheEntity.class, oldEntity.getId() );
copyDataFromDetachedEntityToAttached( oldEntity, attachedEntity );
session.getTransaction().commit();
}
catch ( Exception e ) {
if ( session != null && session.getTransaction().isActive() ) {
session.getTransaction().rollback();
}
throw e;
}
finally {
if ( session != null && session.isOpen() ) {
session.close();
}
}
}
如果TheEntity
由一些基本或级联启用的关联组成,您可以轻松忽略对 merge 的调用,只需更改附加的对象即可。在提交期间,Hibernate将执行flush,它将隐式合并对持久化上下文中任何附加对象所做的更改。
现在需要注意的是TheEntity
是否有任何未启用级联的关联。如果是这种情况,您将需要为任何新添加的关联处理适当的持久性。
答案 1 :(得分:0)
浏览了Google的caasecade选项。保存更新对我有用。