2013-06-13 5 views
1

У вас есть отношения @OneToMany в классе родителя, сопоставленные с сиротским удалением = «true» и Cascade.ALL.Ошибка с «orphan-removal» при клонировании объекта

Во-первых, я сохраняю родительский объект.

Тогда я клонировать родителя в ManagedBean, как это:

Parent newParent = (Parent) org.apache.commons.lang.SerializationUtils.clone(this.object); 

, так что пользователь может внести некоторые изменения и нажмите кнопку Сохранить.

В это время я настойчив newParent, но получить следующее сообщение об ошибке:

##"Caused by: org.hibernate.HibernateException: Don't change the reference to a collection with cascade="all-delete-orphan":package.Parent.children"##

Я действительно не могу понять, почему я получаю эту ошибку, поскольку отношения не требуется. Когда я сначала сохраняю родителя, я ничего не установил для этого отношения, и он работает нормально.

Похож, проблема возникает после клонирования, но я не могу сказать почему!

Может кто-нибудь, пожалуйста, помогите мне с этим?

Спасибо.

+0

Я пробовал оставаться с и без отношения, а затем сериализацию до и после закрытия сессии, но без ошибок. Пожалуйста, укажите шаги или сценарий для повторного создания исключения, а также почтовый код для сопоставления отношений. –

+0

Даже если вы преуспели, сохранение нового клонированного объекта приведет к удалению всех детей-сирот из базы данных, в этом случае вам, вероятно, лучше будет снова загрузить родителя и сохранить новые изменения (ленивые коллекции игнорируются при удалении сироты). – Ziul

ответ

0

Hibernate дал вам несколько ссылок, когда вы загрузили родителя, вы не сможете снова сохранить родителя, если вы не видите ссылки на коллекции для удаления сироты, которые вам давали спящий режим, так что, что вы планируете делать с данными, единственное, что вы можете сделать с этими коллекциями, - это добавлять или удалять элементы, но всегда сохранять ссылки.

Если вы потеряли какую-либо ссылку по какой-то необычной причине, снова загрузите родителя и используйте новые ссылки hibernate.

 Смежные вопросы

  • Нет связанных вопросов^_^