Bom dia , em meu sistema eu tenho uma @procedure e a mesma atualiza um registro no bd e o mesmo é persistido, porém quando eu faço um select buscando o registro atualizado , mas o mesmo não vem atualizado.
Bom dia , em meu sistema eu tenho uma @procedure e a mesma atualiza um registro no bd e o mesmo é persistido, porém quando eu faço um select buscando o registro atualizado , mas o mesmo não vem atualizado.
Olá.
Como está essa procedure e esse select? Em que momentos são acionados? Tenta passar o código deles aqui.
PROCEDURE
public void gerarCodigoDeBarrasELinhaDigitavel(Boleto boleto){
boletoRepository.atualizarCodigoBarrasELinha(boleto.getFilial().getCodigo(),boleto.getCobranca().getCodigo(),boleto.getBanco().getCodigo(),boleto.getNumTransvenda(), boleto.getNumdiasprazoprotesto(),String.valueOf(boleto.getPrestacao()),"N","N","N",0);
boletoRepository.flush();
}
CONSULTA
public Boleto consultarNovoBoleto(int numtransvenda , int prest){
Boleto boleto = new Boleto();
Query q = entity.createNativeQuery("SELECT * FROM PCPREST WHERE NUMTRANSVENDA= :numtrans AND PREST = :prest",Boleto.class).setParameter("numtrans",numtransvenda).setParameter("prest", prest);
boleto =(Boleto) q.getSingleResult();
return boleto;
}
E A CHAMADA DOS MÉTODOS
atualizarBoletoAnterior(boleto.getNumTransvenda(), query);
System.out.println("CRIA BOLETO");
criarNovoBoleto(boletinho, valorAntigo);
System.out.println("DESDOBRA BOLETO");
desdobrarBoleto(boleto);
gerarCodigoDeBarrasELinhaDigitavel(boletinho);
ConfigFinansi config = dao.getConfiguracoes();
System.out.println("FILIAL BOLETO");
if (boleto.getFilial2() != null) {
filial = getFilia(boleto.getFilial2());
} else {
filial = boleto.getFilial();
}
System.out.println("GERAR BOLETO");
return new Boleto().validarBoleto(consultarNovoBoleto(boletinho.getNumTransvenda(),boletinho.getPrestacao()), novoValor, config, filial);
o gera codigo de barras é uma procedure , mas parece que a consulta está sendo chamada antes dela terminar . como proceder?
Se você fizer esse SELECT do método de consulta direto no banco depois de chamar o método de atualizar, retorna o registro atualizado? Retorna mais de um registro?
ele retorna o registro mas não atualizado.
Então o problema deve estar nesse método atualizarCodigoBarrasELinha
. Manda aqui o código dele. Preciso saber como o update está sendo feito.
É uma procedure do sql , ele atualiza o registro de boa , eu consulto via NAvigator e o mesmo foi alterado , mas na aplicação ele não vem alterado acho que a consulta está ocorrendo simultaneamente á execução da procedure.
Os valores numtrans e prest do boleto enviado pra proc são alterados? Porque na consulta você passa o objeto boletinho, que não foi alterado, ele permanece o mesmo. Debugando com break point você viu se ele passa os valores certos para o método de consulta?
ele passa os valores corretos o problema é no controle de transações
Só se não tá commitando a transaction a tempo. Quando você roda esses métodos, por mais que na tela não venha atualizado, no banco o registro fica atualizado? Não digo rodar a proc na mão, digo executando esse bloco que você enviou.