org.hibernate.Session.update () не для временных объектов - это для обновления постоянных объектов. Цитируемое вами сообщение «с сеансом уже был связан другой объект с таким же значением идентификатора» объясняет проблему. Вы создаете новый объект
BranchEntity be = new BranchEntity();
, заполняете его поля и передаете его на обновление. Но обновление ожидает объект, связанный с сеансом. Таким образом, вы должны загрузить объект с помощью вашего dao, например
BranchEntity be = branchDao.loadBranchEntity(...);