hibernate合并的不同行为,以及saveOrUpdate

时间:2011-03-15 20:44:12

标签: hibernate

在一个特定情况下,我必须使用merge而不是saveOrUpdate。

//
// item is detached object.
//
Category category = item.getCategory();
category.setName("cloth");
item.setName("shirt");
session.merge(item);
事情是类别名称在使用合并时没有得到更新,但在使用saveOrUpdate时会更新。谁能解释原因?

1 个答案:

答案 0 :(得分:3)

您必须@ManyToOne(cascade=CascadeType.MERGE)(至少)才能使用(或相关的xml映射)

这指示hibernate将合并操作级联到此​​特定关系 - 即,当合并父对象(项)时,也合并子(类别)。也许你已经省略了MERGE级联类型,这就是saveOrUpdate的工作原理。