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