在一个特定情况下,我必须使用merge而不是saveOrUpdate。
//
// item is detached object.
//
Category category = item.getCategory();
category.setName("cloth");
item.setName("shirt");
session.merge(item);
事情是类别名称在使用合并时没有得到更新,但在使用saveOrUpdate时会更新。谁能解释原因?
答案 0 :(得分:3)
您必须@ManyToOne(cascade=CascadeType.MERGE)
(至少)才能使用(或相关的xml映射)
这指示hibernate将合并操作级联到此特定关系 - 即,当合并父对象(项)时,也合并子(类别)。也许你已经省略了MERGE
级联类型,这就是saveOrUpdate
的工作原理。