Rollback JPA com problemas

4 respostas
F

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();

4 Respostas

F

poste o codigo pra podermos vizualiza-los

F

try{

entity.GetTransiction().begin();
entity.GetTransiction().remove(pessoa);

entity.GetTransiction().commit();

}catch(Exception e){

entity.GetTransiction().rollback();

entity.close();

}
F
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!!!
F

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;
     }

}

Criado 10 de setembro de 2017
Ultima resposta 11 de set. de 2017
Respostas 4
Participantes 2