Hibernate não executa update

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.

Posta o código amigo :smiley:

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().

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”.

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!

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?

Sobre porquê não usar o Hibernet:

http://www.guj.com.br/java/252013-voce-nao-gosta-do-hibernate-eu-tb-nao-leia-para-entender-o-porque



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. :smiley:

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.

Mesmo criando um novo projeto não funcionou! E o tópico acabou virando outra discussão. Rs

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.