У вас есть два отдела, старый, к которому раньше принадлежал Эмп, и новый, который пользователь выбрал, к которому теперь принадлежит Эмп. У каждого из двух отделов есть набор со всеми принадлежащими им сотрудниками.
В одной транзакции вы удаляете Emp из набора сотрудников в старом отделе, добавляете его в набор сотрудников в новом отделе и обновляете эти два отдела с помощью session.update (Dept). Если у вас нет каскада для сотрудников, вам также необходимо обновить Emp.
Это выглядит более сложным, но в этом случае наборы Employee в обоих отделах по-прежнему правильны, и на стороне базы данных это должно привести только к одному оператору SQL.