IllegalArgumentException: Query em Hibernate3 nao procura pelo parametro

2 respostas
J

Eu to tentando acessar o BD pra efetuar uma listagem. So que eu to colocando as named-queries no hbm do meu cliente… O erro ta sendo esse ai

erro

[13/07/05 14:49:31:812 GMT-03:00] 6bc2ac65 RequestProces W org.apache.struts.action.RequestProcessor  Unhandled Exception thrown: class java.lang.IllegalArgumentException
[13/07/05 14:49:32:452 GMT-03:00] 6bc2ac65 WebGroup      E SRVE0026E: [Erro de Servlet]-[Parameter id does not exist as a named parameter in [buscarClientesPeloId]]: java.lang.IllegalArgumentException: Parameter id does not exist as a named parameter in [buscarClientesPeloId]
	at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:380)
	at org.hibernate.impl.AbstractQueryImpl.setInteger(AbstractQueryImpl.java:354)
	at persistencia.HibernateUtil.listar(HibernateUtil.java:113)
	at fachada.Controlador.listar(Controlador.java:24)

named-query do cliente.hbm.xml

<query name="buscarClientesPeloId" >
			<![CDATA[from Cliente c where c.id = ?]]>				
		  </query>

E esse eh o codigo de acesso

query = session.createQuery("buscarClientesPeloId");
				query.setInteger("id", cliente.getId());
				lista = query.list();

Alguém temalguma luz ai pra dar ?
Falou… valeu

2 Respostas

passos

Troque o createQuery por getNamedQuery

query = session.getNamedQuery("buscarClientesPeloId");
query.setInteger("id", cliente.getId());
lista = query.list();

Pra vc utilizar o setInteger utilizando o atributo “id” vc tem que nomear este atributo na sua query:

<query name="buscarClientesPeloId" >
<![CDATA[from Cliente c where c.id = :id]]>
</query>

Ou então utilize o setInteger por posicção

query = session.getNamedQuery("buscarClientesPeloId");
query.setInteger(1, cliente.getId());
lista = query.list();

Hibernate 3 no GUJ

J

Valeu veio… era isso mermo…
Nao tinha visto isso na documentacao e tava quebrando a cabeca…
Valeu mermo

Criado 13 de julho de 2005
Ultima resposta 13 de jul. de 2005
Respostas 2
Participantes 2