2011-03-15 50 views
1

在一个特定的情况下,我必须使用合并而不是saveOrUpdate。不同的行为,并saveOrUpdate

// 
// item is detached object. 
// 
Category category = item.getCategory(); 
category.setName("cloth"); 
item.setName("shirt"); 
session.merge(item); 

事情是同时使用合并类别名称没有更新,但这样做的同时使用saveOrUpdate更新。任何人都可以解释原因

回答

3

您必须@ManyToOne(cascade=CascadeType.MERGE)(至少)为工作(或有关XML映射)

这指示休眠级联合并操作,以这种特殊的关系 - 即当父对象(项目)合并,也合并孩子(类别)。也许你省略了MERGE级联类型,这就是为什么saveOrUpdate有效。