Problemas para gravar (salvar) o objeto no banco!

Fala pessoal! Tudo bem?

Seguinte, estou tentando salvar um objeto no banco (uso MySQL), mas não consigo por algum motivo cujo não faço ideia! Pois ele simplesmente não dá erro…a operação simplesmente fica estática…e através do DEBUG, percebi que tudo estava transcorrendo normalmente…os objetos estavam populados com os dados corretos e tudo.

Segue o código que uso para gravar o objeto:


package persistence;

import java.util.List;

import manager.UsuarioController;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;


import entity.Mensagem;
import entity.Usuario;
public class MensagemDao {

	Session session;
	Transaction transaction;
	Query query;
	
	String uc = (String) new UsuarioController().getUsuario().getUsername();
	
	public Usuario buscaUsuario() throws Exception{
		  session = HibernateUtil.getSessionFactory().openSession();
		  Query query = session.createQuery("from Usuario where username= :parametro");
		  query.setParameter("parametro", uc);
		  Usuario usr = (Usuario) query.list().get(0);
		  session.close();
		  return usr;
		  }
	
	 public void create(Mensagem m, Usuario u) throws Exception{
	   session = HibernateUtil.getSessionFactory().openSession();
	   transaction = session.beginTransaction();
	   
	   u = this.buscaUsuario();

	   m.setUsuario(u);
	   m.setNick(u.getUsername());
	   
	   session.save(m);//========>> O SISTEMA PARA AS OPERAÇÕES A PARTIR DAQUI!!! Ele não grava, nem com o persist()!!!
	   transaction.commit();
	   session.close();  
	  }

Se alguém aí puder me ajudar, eu agradeço imensamente desde já!

Abraços!!!

Se não me engano o Hibernate tem um método que é o saveOrUpdate(). Tenta com ele.

Coloca um try/catch no método. Veja c vai aparecer algo no catch.

[quote=jakefrog]Se não me engano o Hibernate tem um método que é o saveOrUpdate(). Tenta com ele.

Coloca um try/catch no método. Veja c vai aparecer algo no catch.[/quote]

FALAAAAAAAA jakefrog!!!

Eu fiz o que vc sugeriu, mas surtiu o mesmo efeito do save, com exceção de que com o saveOrUpdate ele apaga o conteúdo da área de mensagem como deveria.

Botei pra imprimir no console do eclipse mesmo o resultado…segue o código…


	public void create(Mensagem m, Usuario u) {
		 try {
		   session = HibernateUtil.getSessionFactory().openSession();
		   transaction = session.beginTransaction();
		  
		   u = this.buscaUsuario();

		   m.setUsuario(u);
		   m.setNick(u.getUsername());
		   
		   session.saveOrUpdate(m);
		   transaction.commit();
		   session.close(); 
			} catch (Exception e) {
			System.out.println(e);
			}
		  }

E os resultados em função do método:


//usando session.save(x):

System.out.println(e.getMessage()); = Session is closed!

System.out.println(e); = org.hibernate.SessionException: Session is closed!

System.out.println(e.getStackTrace()); = [Ljava.lang.StackTraceElement;@677ac4

//usando session.saveOrUpdate(x):

System.out.println(e.getMessage()); = Session is closed!

System.out.println(e); = org.hibernate.SessionException: Session is closed!

System.out.println(e.getStackTrace()); = [Ljava.lang.StackTraceElement;@17def5b

Tentei também dando um throws Exception, mas com isso nem apagar o campo de mensagem ele apaga com o saveOrUpdate(). Ele simplesmente age como se nada estivesse acontecendo…

Pescou alguma coisa aí? Se precisar de mais códigos é só pedir…

Matei aqui!!!

Olha o método que implementei e usei dentro do create:


	public Usuario buscaUsuario() throws Exception{
		  //session = HibernateUtil.getSessionFactory().openSession();
		  Query query = session.createQuery("from Usuario where username= :parametro");
		  query.setParameter("parametro", uc);
		  Usuario usr = (Usuario) query.list().get(0);
		  //session.close();
		  return usr;
		  }

Nos comments eu abria a fechava a sessão…que mancada heim!!!

Vlw jakefrog!!! Pcausa da sua dica eu consegui dar o pulo do gato!

Abraços!!!

Maravilha! \o/