Вы можете обновить только управляемые объекты.Чтобы получить управляемый объект, вы должны сначала присоединить его к сеансу гибернации, извлекая объект по идентификатору.В вашем методе update(int primaryKey)
вы должны переместить свой код вверх:
redto=ses.get(retrainDto.class, new Integer(primarykey));
и поместить вместо
retrainDto redto=new retrainDto();
PS, если вы хотите создать вместо него новую сущность чтобы обновить существующий, вы должны , а не вручную назначить свойство идентификатора (redto.setCompanyId(sc.nextInt());
) для созданного экземпляра, поскольку база данных сделает это за вас