在使用orphan-removal =“true”和Cascade.ALL映射的Parent类中有一个@OneToMany关系。
首先,我坚持父对象。
然后我在ManagedBean上克隆父节点,如下所示:
Parent newParent = (Parent) org.apache.commons.lang.SerializationUtils.clone(this.object);
,因此用户可以进行一些更改,然后单击“保存”按钮。
此时我坚持使用newParent但收到以下错误:
##“引起:org.hibernate.HibernateException:不要更改对集合的引用 级联= “全删除-孤儿”:package.Parent.children“##
我真的不明白为什么我得到这个错误,因为不需要关系。当我第一次坚持父母时,我没有为这种关系设置任何东西,它可以正常工作。
看起来克隆后问题就出现了,但我不明白为什么!
有人可以帮我解决这个问题吗?
感谢。
答案 0 :(得分:0)
Hibernate在你加载父级时给了你一些引用,如果你没有出现hibernate给你的orphan-removal集合引用你就不能再保留父级了,所以无论你打算如何处理数据,您可以对这些集合执行的唯一操作是添加或删除项目,但始终保留引用。
如果由于某些特殊原因而丢失任何引用,请再次加载父级并使用hibernate为您提供的新引用。