sech777
Outubro 11, 2011, 9:56am
#1
Pessoal, bom dia!
O hibernate não está executando update no banco MySql.
Liguei o debug do hibernate “no máximo”. Mostra as queries e tudo. Porém, não atualiza no banco de dados. E também não dá erro algum.
Alguém já passou por isso?
Pode ajudar?
Obrigado.
sech777
Outubro 11, 2011, 10:35am
#3
Session session = lerSession();
Transaction transacao = session.beginTransaction();
try
{
session.update(getTabela());
transacao.commit();
}
catch (HibernateException e)
{
transacao.rollback();
System.out.println("Erro.Tabela.Alterar: " + e.getMessage());
e.printStackTrace();
}
Esse método getTabela() te retorna um POJO? Pra que o Update funcione o campo do ID deve estar preenchido.
O correto seria fechar a sessão após o commit().
sech777
Outubro 11, 2011, 10:45am
#5
Sim, o método getTabela() retorna um POJO. O Método commit() já fecha a sessão!
Cara da uma olhada no seu hibernate.cfg.xml se nao ta como “create” as tabelas, ai é so voce trocara para “update” ou “validate”.
sech777
Outubro 11, 2011, 11:27am
#7
Já tentei de tudo. O pior é que o hibernate monta as queries tudo normal, porém não altera no banco. Já estou ficando maluco!
JA TENTOU CRIAR OUTRO PROJETO SO PARA TESTAR O HIBERNATE?? FAZ UM TESTE SIMPLES VE O QUE DA!
saoj
Outubro 11, 2011, 11:51am
#9
Hibernate é um pé-no-saco. Se possível não use ele . Agora a última vez que isso aconteceu comigo foi falta de flush().
Por que esse descontentamento com o hibernate? Sempre usei e sempre funcionou bem, qual outro framework para java seria melhor que hibernet? jdbc?
saoj
Outubro 11, 2011, 2:41pm
#11
Cara isso são milhares de casos e acasos, é a mesma coisa de um programador PHP discutir com um progrador JAVA. Qual é melhor? Acho que cada um deve respeitar aquilo que usa, se você acha horrível que ele use, ÓTIMO pra você, consequentemente você terá um sistema muito mais competitivo que o dele.
Mas é isso ai gostei dos post(apesar de ser velho), parabéns. Cada um tem que falar o que pensa, sempre respeitando o próximo.
Abraços.
sech777
Outubro 13, 2011, 8:26am
#13
Mesmo criando um novo projeto não funcionou! E o tópico acabou virando outra discussão. Rs
sech777
Outubro 17, 2011, 6:43pm
#14
Pessoal, resolvi!
Fazendo um debug profundo do POJO retornado pelo método getTabela();
Transaction transacao = session.beginTransaction();
try
{
session.update(getTabela());
transacao.commit();
}
catch (HibernateException e)
{
transacao.rollback();
System.out.println("Erro.Tabela.Alterar: " + e.getMessage());
e.printStackTrace();
}
Vi que em algum ponto do meu sistema o POJO passado como parâmetro ao método update() estava inválido, isto é, o atributo ID do objeto não estava setado.
Assim, o update() não atualizava. Depois que setei o ID funcionou direitinho. Agradeço a ajuda de todos.