Bom dia. Alguem poderia me dizer pq o update só é enviado para o Banco de dados no momento do Commit.
tenho a seguinte situação. tem uma agenda de tarefas. quando iniciar ela que altear uma descricao do banco dizendo que a operação entrou em execução… e ao final… esta descrição passa a dizer que concluio. Isto estando na mesma transação.
só que o hibernate + Vraptor esta mandando o update apenas no commit. fazendo que o primeiro update não tenha efeito nenhum.
[code] CriadorDeSessionParaTarefas criadorDeSessionParaTarefas = new CriadorDeSessionParaTarefas();
RequisicaoDeTarefaDAO requisicaoDeTarefaDAO = new RequisicaoDeTarefaDAO(
criadorDeSessionParaTarefas.getInstance());
Transaction transaction = null;
transaction = criadorDeSessionParaTarefas.getInstance().beginTransaction();
try {
RequisicaoDeTarefa requisicaoDeTarefa = requisicaoDeTarefaDAO.pegaRequisicaoTarefaporID(this.idTarefaRequisicao);
//este update não é enviado ao banco de dados
requisicaoDeTarefa.setDescricaoConclusao("Em execução");
requisicaoDeTarefaDAO.altera(requisicaoDeTarefa);
GeradorSpedFiscal geradorSpedFiscal = new GeradorSpedFiscal(
criadorDeSessionParaTarefas.getInstance(),
new EmpresaFilialDAO(criadorDeSessionParaTarefas
.getInstance()),
new LivroFiscalDAO(criadorDeSessionParaTarefas
.getInstance()), new MovimentoGIADAO(
criadorDeSessionParaTarefas.getInstance()),
new CIAPParaSPEDDAO(criadorDeSessionParaTarefas
.getInstance()));
String arquivoSalvar = ""+"EFD_0"+this.sufixoCNPJ+"042011"+".txt";
geradorSpedFiscal.executarSPED(this.sufixoCNPJ, this.dataInicial, arquivoSalvar);
//este update é enviado ao banco de dados
requisicaoDeTarefa.setArquivoGerado(arquivoSalvar);
requisicaoDeTarefa.setDataDaConclusao(Calendar.getInstance());
requisicaoDeTarefa.setDescricaoConclusao("Arquivo Concluido");
requisicaoDeTarefaDAO.altera(requisicaoDeTarefa);
transaction.commit();
[/code]
Só gera a sql update envia o comando ao banco no primeiro update.
Ah, este meu codigo esta num metodo run(). para um schedule do spring. por isso que estou criando a session do hibernate dentro do metodo. pois na execução já poderia esta com a session finalizada.
Obrigado pela ajuda