JPA (RollBack-duvida tecnica)

Ola pessoal.
Veja se alguem pode me ajudar a entender um poco melhor o conceito de rollback.

Estou com o seguinte problema:

try {
entityManager.getTransaction().begin();
entityManager.persiste(obj);
entityManager.getTransaction().commit();
} catch(Exception e) {
entityManager.rollback();
}

Este codigo acima funciona perfeitamente para inserir registros.
Porem para testar o rollback, cadastrei um registro propositalmente com um campo definido como unico e com um valor repetido para gerar uma exception de violation constraint. (estou usando mysql com tabelas innodb).

Comportamento do codigo acima:
No .begin(); a Transaction fica com .isActive() = true.
No .persiste(); executa sem problemas.
Porem no .commit(); ocorrem dois fatos:
- uma exception de violation constraint é lançada;
- e a Transaction() fica com .isActive = false.
No catch(exception e) a exception é capturada sem problemas.
Porem no .rollback() outra exception é lançada pois a Transaction.isActive() = false neste instante.

Alguem pode me ajudar ?

faça esse teste no tratamento de exceção: if( entityManager.getTransaction().isActive()){
entityManager.getTransaction().rollback();
}