Dúvida Update Hibernate [RESOLVIDO]

3 respostas
guihgf_10

Bom dia galera, estou iniciando no hibernate que por sinal é incrível, mas tenho um problema que está enchendo. Em uma servlet eu carrego o meu objeto:

usuario=in.readUTF();
senha = in.readUTF();
in.close();

b.setUsuLogin(usuario);
b.setUsuSenha(senha);

msg=ld.senha(b); //chama classe de persistencia

Em seguida no método senha eu dou o update:

public String senha(Usuario u)
    {
        Session s=HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t=s.beginTransaction();
       
        try
        {
            t.begin();
            s.merge(u);
            t.commit();
            return msg="Senha alterada com sucesso!";
        }
        catch(Exception e)
        {
            t.rollback();
            System.out.println(e.getMessage());
            return e.getMessage();
        }
       
    }

O problema é o seguinte, na Servlet eu não setei o atributo u.setUsuNome, pois não quero e não posso dar update nele, essa é uma aplicação móvel com servlets, e estou migrando para mysql e hibernate e não quero mecher no J2ME, porém o hibernate insiste que eu tenho que carregar o objeto por completo. Ouvi falar em usar load(), mas como ficaria em meu caso ?

Valeu galera!

3 Respostas

LPJava

sim, vc pode usar o load() para carregar quando tem certeza que o objeto ja existe.

Usuario user = (Usuario)session.load(Usuario.class,2);//o id que vc quer
user.setLogin("guj");
session.getTransaction().commit();

vc pode usar o saveOrUpdate() se já existir ele fará o update.

flw.

guihgf_10

Valeu amigo, deu certo, fico assim:

public String Senha(String usuario, String senha)
    {
        Session s=HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t=s.beginTransaction();
        Usuario u = (Usuario)s.load(Usuario.class,usuario);
        u.setUsuSenha(senha);
     
        try
        {
            t.begin();
            s.saveOrUpdate(u);
            t.commit();
            return msg="Senha alterada com sucesso!";
        }
        catch(Exception e)
        {
            t.rollback();
            System.out.println(e.getMessage());
            return e.getMessage();
        }
       
    }
LPJava

hm legal. se existir ele atualiza senao ele cria. :slight_smile:

Criado 13 de fevereiro de 2011
Ultima resposta 14 de fev. de 2011
Respostas 3
Participantes 2