Hibernate - Parametros em Named Queries

6 respostas
tiagops

Pessoal, to montando um exemplo com o tutorial postado aqui no Guj, mas parei num ponto.

Quando passo um paramentro pra minha NamedQuery, o hibernate nao me devolve nada, ou seja um List = empty.
Se faco o select sem parametros ele traz, ou seja, esta indo no banco, ate ai esta funcionando...

o meu acesso a query esta assim :

Session session = HibernateUtility.getSession();
      Query query = session.getNamedQuery("validarLogin");
      query.setString("login", usr.getLogin());
      return query.list();

a minha namedQuery

<query name="validarLogin">
<![CDATA[from Usuario u where u.login = :login]]>
</query>

<query name="listarUsuarios">
<![CDATA[from Usuario]]>
</query>

Se a partir do método acima eu chamar o listarUsuarios, dá certo. Ele esta reconhecendo o parametro, pois ja coloquei outro nome de parametro pra testar e deu erro. E debugando o valor de usr.getLogin é "nome" nao está vazio...

Obrigado!

Percebi que o mesmo acontece quando utilizo a query dessa forma:
Query query = session.createQuery("from Usuario usr where usr.login = :login");
      query.setString("login", usr.getLogin());
      return query.list();

6 Respostas

_fs

Não dá erro, só vem vazio?

Ahn … tem certeza que há algum registro na tabela de usuários cujo login é “nome”?

tiagops

Não dá erro nao…

Tenho certeza quanto ao registro da tabel, eu mesmo inclui e verifiquei mais de uma vez…

Estranho né? Vou continuar tentando descobrir. Valeu!

_fs

Recomendo que veja a query gerada pelo Hibernate e execute-a diretamente no front-end do banco de dados.

tiagops

Como faco para obter essa query?

Usando o debug do Hibernate eu obtive o seguinte:

Essa é a query? No lugar da interrogação era pra aparecer o “nome” correto?

o que devo estar fazendo de errado???

Valeu!

tiagops

Lipe, o problema é que o Hibernate estava comparando “nome” com "nome " que estava no banco. Quando faco SQL no oracle, ele discarta os espacos, mas pelo geito o Hibernate não.

Dai mudei meu HQL pra

Dai deu certo… Valeu!

tiagops

Se alguem quiser uma solução :

http://www.hibernate.org/90.html

Criado 3 de maio de 2006
Ultima resposta 4 de mai. de 2006
Respostas 6
Participantes 2