Update do Hibernate deletando

SessionFactory fabrica = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); Session sessao = fabrica.openSession(); Transaction xFood = sessao.beginTransaction(); sessao.merge(alimento); xFood.commit(); sessao.close();

O código acima está em um botão que eu gostaria que atualizasse o registro quando clicado, mas quando eu executo esse código ele DELETA o registro… o que está errado? obrigado!

Vc tem a certeza de que esse é o único código que está sendo chamado?

Não… tem o meu objeto alimento

Chamo todos os setters que pegam as informações do meu form JÁ PREENCHIDO

alimento.setId(Integer.parseInt(tfIDResultado.getText())); alimento.setNome(tfNomeResultado.getText()); alimento.setTipo(cbTipoResultado.getSelectedItem().toString()); alimento.setPorcao(Float.parseFloat(tfPorcao.getText())); alimento.setMedida(tfMedida.getText().toString()); alimento.setValorEnergetico(Float.parseFloat(tfValorEnergetico.getText())); alimento.setCarboidrato(Float.parseFloat(tfCarboidratos.getText())); alimento.setProteina(Float.parseFloat(tfProteinas.getText())); alimento.setGorduraSaturada(Float.parseFloat(tfGordurasSaturadas.getText())); alimento.setGorduraTrans(Float.parseFloat(tfGordurasTrans.getText())); alimento.setColesterol(Float.parseFloat(tfColesterol.getText())); alimento.setFibraAlimentar(Float.parseFloat(tfFibraAlimentar.getText())); alimento.setSodio(Float.parseFloat(tfSodio.getText())); alimento.setCalcio(Float.parseFloat(tfCalcio.getText())); alimento.setFerro(Float.parseFloat(tfFerro.getText())); alimento.setVitaminaA(Float.parseFloat(tfVitaminaA.getText())); alimento.setVitaminaB1(Float.parseFloat(tfVitaminaB1.getText())); alimento.setVitaminaB2(Float.parseFloat(tfVitaminaB2.getText())); alimento.setVitaminaB5(Float.parseFloat(tfVitaminaB5.getText())); alimento.setVitaminaB6(Float.parseFloat(tfVitaminaB6.getText())); alimento.setVitaminaB12(Float.parseFloat(tfVitaminaB12.getText())); alimento.setVitaminaC(Float.parseFloat(tfVitaminaC.getText())); alimento.setVitaminaD(Float.parseFloat(tfVitaminaD.getText())); alimento.setVitaminaE(Float.parseFloat(tfVitaminaE.getText())); alimento.setVitaminaK(Float.parseFloat(tfVitaminaK.getText())); alimento.setFosforo(Float.parseFloat(tfFosforo.getText())); alimento.setIodo(Float.parseFloat(tfIodo.getText())); alimento.setMagnesio(Float.parseFloat(tfMagnesio.getText())); alimento.setZinco(Float.parseFloat(tfZinco.getText())); alimento.setPotassio(Float.parseFloat(tfPotassio.getText())); alimento.setSelenio(Float.parseFloat(tfSelenio.getText()));

E aí sim eu faço isso.

Nossa, não é possível que ninguém saiba resolver isso…
Já procurei em diversos lugares e não encontrei. E agora ninguém aqui soube responder…
Não queria ter que fazer por JDBC puro mesmo?

Obrigado!

Ao invés de

sessao.merge(alimento);

tente

session.update(alimento);

estava assim, e não funcionava do mesmo jeito :confused:

Da pra perceber que a session factory é criada toda vez. Por acaso, o banco não está sendo criado a cada build da session factory, e consequentemente apagando os dados gravados?