Alterar com HQL

7 respostas
anderson.bonavides

Pessoal existe alguma forma de alterar com HQL ao invés de atualizar o objeto?
Tipo, queria apenas alterar um campo de minha tabela ao invés de atualizar o objeto completo.

7 Respostas

ignacio83

Dá sim:

ex:

String hql = "update Cliente set nome= :novoNome where nome = :nome";
Query query = session.createQuery(hql);
query.set.....
query.executeUpdate();
anderson.bonavides

Obrigado ignacio83.
Vou tentar aki e qq coisa posto novamente.

=D

anderson.bonavides

ignacio83,

Só não entendi o fato de se utilizar o where nome = :nome após a clausula SET isso ta correto?

wagner_a_lima

Pode ser qualquer condição que você deverá passar como parâmetro… :smiley:

anderson.bonavides

Eu quis dizer do parâmetro se duplicar: SET nome= :novoNome WHERE nome = :nome.

Ainda existe um problema:

Query select = session.createQuery("UPDATE Login l SET l.loginOk = :loginOk WHERE l.loginOk = :loginOk");

org.hibernate.QueryException: Not all named parameters have been set: [loginOk] [update Login l set l.loginOk = :loginOk]

Como nunca trabalhaei com esta clausula estou tendo dificuldades.

Grato!

Mero_Aprendiz

Bem, esse problema existe porque você não setou corretamente os valores de :loginOk
Acredito que faltou um trecho de código mais ou menos assim:

select.setParameter("loginOk", valorQueLoginOkDeveReceber)

[]'s
JL

anderson.bonavides

Obrigado Mero_Aprendiz, realmente funcionou. Não me passou na minha cabeça que estava faltando o setParameter();;

haha

=D

Obrigado!

Criado 28 de abril de 2009
Ultima resposta 28 de abr. de 2009
Respostas 7
Participantes 4