Вам нужна вложенная транзакция, к сожалению, hibernate не поддерживает вложенные транзакции, поэтому я боюсь, что вам не повезло. Единственный реальный выбор - выполнить обновление в двух отдельных транзакциях.
YourTransactionalService service = ;
service.updateNameAndAddress(details);
try{
service.updateEmail(details);
}catch( HibernateException e){
// could just ignore it?
}
Возможно, вам стоит посмотреть, почему Hibernate выдает исключение, и, возможно, проверит данные заранее, чтобы предотвратить их в первом случае, это может решить реальную основную проблему, а не мое решение здесь, которое только шагает в сторону.