Inserções ao banco pararam Hibernate + MySQL

4 respostas
higornucci

Estou com um problema sério.

Meu sistema usa Hibernate-Annotations + MySQL e estava indo muito bem. Até que hoje as inserções no banco pararam de acontecer.

Resumindo: Não insere mais nada, contudo aparece no console dizendo que a inserção foi feita.

Já me revirei em mil para achar o erro, mas parece não existir erro (bom, pelo menos qto a inserção ^^)

Hibernate: insert into guaicurus.requisicao (data_requisicao, descricao, empresa_id_empresa, fornecedor_id_fornecedor, id_requisicao_empresa, id_requisicao_servico, impresso, num_total_prod, numero_nota, numeroParcelasFim, numeroParcelasIni, pago, servico_id_servico, status, tipoPagamento, vlr_req) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) Hibernate: insert into guaicurus.forma_pagamento (data_pag, data_parcela, pago, parcial, id_requisicao, valor_parcela) values (?, ?, ?, ?, ?, ?) Hibernate: insert into guaicurus.produto_requisicao (descricao, quantidade, requisicao_id_requisicao, vlr_total) values (?, ?, ?, ?)

Vejam, ele fala que inseriu, mas qdo vou consultar ele nao existe.

Alguém tem alguma idéia de como resolver isso?

4 Respostas

Roger75

Dê uma olhada nos campos que está tentando inserir, e veja se há constraints na tabela. Às vezes pode ser que os dados não estejam no formato que o banco requer.
Por exemplo, pode ser que você esteja tentando inserir uma data no formato “0000-00-00 00:00:00”, e daí o Hibernate converte para null, e daí o banco não aceita valor nulo, impedindo a inserção.

Thiago_Peter

Verifique também a questão do auto commit.
Geralmente no Mysql não é necessário se preocupar com isso, mas não custa dar uma olhada.

gilvan.sfilho

Amigo, poste o código que você está utilizando para que possamos tentar entender melhor o problema.
Verifique se você está lembrando de comitar a transação.

Segue um código de exemplo.

...

Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();

Pessoa pessoa = new Pessoa();
pessoa.setNome("Fulano");

session.save(pessoa);

//Este método é responsavel por comitar a transação.
//Sem esse método as alterações realizadas no banco não serão salvas.
transaction.commit();

session.close();

...

Abraços…

higornucci

Consegui, camaradas.

O código estava certo e os dados também. O que notei que ficou diferente na hora de sincronizar os dados do banco antigo com o atual, foi que a ENGINE mudou para InnoDB e antes era MylSAM. Voltei para a MylSAM e agora esta normal.

Não entendi muito bem qual a diferença nas ENGINES, vou dar uma lida rápida aqui e ver se descubro algo.

OBS: Nada como dormir bem e resolver os problemas no dia seguinte com a cabeça fria =P

Criado 8 de setembro de 2010
Ultima resposta 9 de set. de 2010
Respostas 4
Participantes 4