假设我有:
// all objects have valid mapping to database
public class A {
private int id;
private String name;
private List<B> chidlren1;
private List<C> children2;
}
在我的控制器的更新方法中,我必须更新特定对象,但是我将其新值存储在会话变量中,例如另一个A对象。
那么问题是如何有效地从另一个对象更新该特定对象?下面的代码是否有效?
A old = dao.get(id);
A temp = getFromSession();
old.Name = temp.Name;
old.Children1 = temp.Children1;
old.Children2 = temp.Children2;
dao.update(old);
另一个问题是,如果之前的方法正确,那么Hibernate会首先从子表中删除所有记录并添加新记录,还是它可以自动更新/插入新记录并删除已删除的记录?
谢谢
更新#1:假设temp的子集合与old的子集合不同怎么办?
dao.update(old)
将实际更新该记录。不会插入新记录。 - Rakesh