Я предполагаю, что вы используете Cascade в отображении для класса, представленного объектами A и B, т.е. A и B являются экземплярами некоторого класса X, а отображение X содержит атрибут каскада в коллекции, содержащей объект для передачи.
Учитывая это предположение, это может помочь.
Если вы хотите иметь возможность переносить объект из одной коллекции в другую, вам необходимо подумать о том, должно ли перемещаемое существовать существовать независимо от двух коллекций.
Если объект передачи не сохраняется сам по себе, при выполнении передачи у вас возникнут проблемы, поскольку переданный объект уже известен сеансу.
Есть два выхода, которые я могу придумать. Лучшее из двух, вероятно, состоит в том, чтобы рассматривать объект переноса как независимый объект, который сам по себе сохраняется в БД (т. Е. Не использует Каскадирование при отображении объектов с коллекцией). Концептуально это имеет смысл, потому что если вы можете перенести его из одной коллекции в другую, это подразумевает, что каким-то образом он не зависит от двух объектов, имеющих коллекции. Это значит, что вы можете оказаться с сиротами.
Если вы хотите придерживаться использования каскада в сопоставлениях, то вам нужно будет удалить из объекта А в транзакции, отличной от операции добавления в объект Б. Я подозреваю, что это не то, что вы хотите сделать.