The JpaTransactionManager seems to have a nice piece of functionality that translates an exception thrown by Hibernate.
For example it will call translateExceptionIfPossible in doCommit and we will get a specific exception somewhere in the org.springframework.dao.DataAccessException hierarchy.
For example org.hibernate.StaleStateException will get wrapped into a JpaOptimisticLockingFailureException.
The JtaTransactionManger has no such call and seems to bundle all of my Hibernate exceptions into UnexpectedRollbackException exception.
Not sure if this is a bug but it seems inconsistent and also we lose all of the specific exception type information.