Hibernate [MySql] salva mas não atualiza registros

4 respostas
juceliohv

Bom dia irmãos.

Tive o seguinte problema;

Estava criando um registro com hibernate e banco MySql, abrindo e fechando sessão corretamente, dando o Commit ou Rollback corretamente e executando tudo dentro de uma thread. O problema era que quando o processamento terminava e a tela era atualizada, o hibernate não conseguia puxar o registro recem criado no banco, apenas os mais antigos, ou quando eu fechava a tela e reabria.

Exprimentei o sleep da Thread:

Usando o código acima, o erro sumiu e a tela foi atualizada conforme o ultimo registro recem criado no banco.

CONCLUSÃO: Descobri que o problema é um delay (Atraso) do banco de dados. Porém esta é uma solução paleativa, pois quando o tempo de delay for maior que um segundo o erro acontecerá novamente.

Alguém poderia me ajudar com uma solução definitiva seja através do hibernate ou do proprio Mysql?

Obrigado e que deus os abençoe.

4 Respostas

lcegatti

Olá.

Inicie uma nova transaction para cada operação de escrita que você for fazer no database, por exemplo:
try {
    factory.getCurrentSession().beginTransaction();
 
    // Do some work
    factory.getCurrentSession().load(...);
    factory.getCurrentSession().persist(...);
 
    factory.getCurrentSession().getTransaction().commit();
}
catch (RuntimeException e) {
    factory.getCurrentSession().getTransaction().rollback();
    throw e; // or display error message
}

Fonte Sessions and Transactions

juceliohv

Já foi feito isso parceiro.

Tens outra sugestão? lembrando que o hibernate está funcionando corretamente, o problema é o atraso no banco MySql.

lcegatti

Hmmm
Tem algumas coisas que eu verificaria:
Cache do hibernate, caso tenha configurado
Cache de sessão da sua pagina, eu daria uma olhada nisso
Verifique se logo após o término de sua transação o registro consta na sua tabela

juceliohv

Como eu verifico o cache do hibernate?

Criado 8 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 4
Participantes 2