Я использую комбинацию Spring 2.5.6 и Hibernate Annotations. У меня есть три объекта (таблицы или ж / д) на рассмотрении: клиент, адрес, заказ. Клиент имеет свойство Cascade DELETE_ORPHANS для адресов.
То, что я делаю, - это объединение клиентов, я перемещаю все адреса и заказы от одного клиента к другому, а затем устанавливаю отключенный бит для старого клиента. Я делаю это, удаляя адреса из CustB и добавляя их в CustA. Затем я сохраняю CustA с помощью .update (custA), адреса и заказы перемещаются соответствующим образом, но когда я обновляю custB с отключенным битом, он стирает мои перемещенные адреса!
Когда я комментирую DELETE_ORPHANS, он работает нормально.
Как мне остановить DELETE_ORPHANS от удаления перемещенных адресов? Не следует ли мне удалить их из custB и просто изменить их ссылку на клиента? Если я сделаю все это внутри транзакции, а не отсоединяю объекты между каждой операцией, они будут корректно обновляться с включенным DELETE_ORPHAN?