Rollback JPA com problemas

Seguinte, vou logo ao ponto. Tenho uma aplicação e, após uma exceção do tipo eliminação de registro com chave estrangeira em outra tabelao, o rollback não funciona. (manager.getTransaction().rollback()). A aplicação dispara o mesmo erro mesmo para registros que não possuem chaves estrangeiras! O que fazer!? já tentei: manager.getTransaction().rollback(); manager.close();

poste o codigo pra podermos vizualiza-los

try{

entity.GetTransiction().begin();

entity.GetTransiction().remove(pessoa);
entity.GetTransiction().commit();
}catch(Exception e){
entity.GetTransiction().rollback();
entity.close();
}

Mais uma dúvida, tenho esse código aqui:
if(!entityManager.getTransaction().isActive()){
entityManager.getTransaction().begin();
}
TypedQuery q= entityManager.createQuery(“select p from Passagem p where
p.pessoa=:pessoa”,Passagem.class);
q.setParameter(“pessoa”, paciente);
List lista= q.getResultList();
Ele é chamado qd um usuário quer apagar um paciente, mas quando chamo ele de novo a query não encontra mais as passagens!!!??? A menos que feche a tela e recomece!!!

Código completo!

public boolean remover(Paciente paciente) {
if(!entityManager.getTransaction().isActive()){
entityManager.getTransaction().begin();
}
TypedQuery q= entityManager.createQuery(“select p from Passagem p where p.pessoa=:pessoa”,Passagem.class);
q.setParameter(“pessoa”, paciente);
List lista= q.getResultList();

        if(lista != null && !lista.isEmpty()){
           int result = JOptionPane.showConfirmDialog(null, "Atenção a remoção irá excluir as passagens de Entrada do Paciente");
			           if(result == 0){
						   	         
			   	                     TypedQuery<Agendamento> query= entityManager.createQuery("select ag from Agendamento ag where ag.paciente=:paciente",Agendamento.class);
				                     query.setParameter("paciente", paciente);
				                      List<Agendamento> listaAge=  query.getResultList();
						             if(listaAge!=null && !listaAge.isEmpty()){
						            	  int result2 = JOptionPane.showConfirmDialog(null, "Atenção a remoção irá excluir os agendamentos desse Paciente");
							        	  if(result == 0 && result2 == 0){
						            	     for (Passagem passagem : lista) {
									   	        	 entityManager.remove(passagem);
									   		 }
						            	     for (Agendamento a : listaAge) {
						        	              entityManager.remove(a);
								             }
						                      entityManager.remove(paciente);
						                      entityManager.getTransaction().commit();
						                      return true;
							        	 }
						            }
		                  }
             }
        return false;
     }

}