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 
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?