[Resolvido] Problema em consulta HQL (parametro -> Integer)

20 respostas
tiago_

Pessoal

tenho esse metodo:

public Requisicao buscarCodigoPendente(int codigo) {
		String hql="select s from Requisicao s where s.codigo = :codigo";;
		Query consulta = this.session.createQuery(hql);
		consulta.setInteger("codigo", codigo);
		return (Requisicao) consulta.uniqueResult();
	}

E tenho a chamada dele no meu Bean:

...
 Requisicao codigoRequisicaoAtual = requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());
		 System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);
		 itemRequisicao.setRequisicao(codigoRequisicaoAtual);
...

Esse metedo deveria retornar um objeto do tipo Requisicao… Eu testei no hql editor: select s from Requisicao s where s.codigo like ‘1’
E ele retorna certinho objeto q eu quero… Qnd clico no botao p executar o metodo aparece o seguinte erro:

java.lang.NullPointerException

javax.faces.el.EvaluationException: java.lang.NullPointerException

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)

at javax.faces.component.UICommand.broadcast(UICommand.java:311)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: java.lang.NullPointerException

at requisicao.web.RequisicaoBean.salvar(RequisicaoBean.java:96)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at com.sun.el.parser.AstValue.invoke(AstValue.java:234)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)

 52 more

Tenho certeza q o erro ta no primeiro codigo, mas eu nao consigo encontrar o erro…

Vlw pessoal :slight_smile:

20 Respostas

V

o problema é que isso requisicaoRN.buscarCodigoPendente(requisicao.getCodigo()); está retornando null.

R

mude isso:

consulta.setInteger("codigo", codigo);

para isso:

consulta.setParameter("codigo", codigo);
tiago_

tem certeza ? Pq se estivesse retornando null, deveria aparecer no console “null”

por isso eu coloquei o tal

System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);

P ver o q ele vai retornar… E no console nao aparece null, ou melhor, nem aparece nada dessa linha.
Ja fiz isso antes e no console aparecia null qnd o return era null…

Tem certeza q eh isso ? :wink:

R

E tire os 2 pontos-e-virgulas daqui:

String hql="select s from Requisicao s where s.codigo = :codigo";;
V

tem certeza ? Pq se estivesse retornando null, deveria aparecer no console “null”

por isso eu coloquei o tal

System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);

P ver o q ele vai retornar… E no console nao aparece null, ou melhor, nem aparece nada dessa linha.
Ja fiz isso antes e no console aparecia null qnd o return era null…

Tem certeza q eh isso ? ;)

é justamente nessa parte: System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);

que gera a exeção :wink:

R

mano, seu problema é isso , voce busca o codigo passando ele como PARAMETRO.

String hql="select s from Requisicao s where s.codigo = :codigo";

Logo, setInteger nao é indicado, seria indicado se voce usasse ?, pra indicar que essa interroacao é um inteiro.

mude para setParameter.

R
select s from Requisicao s where s.codigo like '1'

seu CODIGO é um int ou uma string ?

V

ou então pode ser que ele não ta achando no banco, da um print no console no codigo antes de vc chamar a função do hibernate, depois vc da um select do banco filtrando o codigo, vendo se o registro existe realmente.

Hebert_Coelho

Teve gente afirmando que o problema em tal linha, desculpe mas não tenho as bolas pra isso. :lol: :lol: :lol:

Seu erro está exatamente nessa linha: at requisicao.web.RequisicaoBean.salvar(RequisicaoBean.java:96)

O que tem aí?

tiago_

rof20004:

mude isso:

view plaincopy to clipboardprint?
consulta.setInteger(“codigo”, codigo);

para isso:

view plaincopy to clipboardprint?
consulta.setParameter(“codigo”, codigo);

mano, seu problema é isso , voce busca o codigo passando ele como PARAMETRO.

String hql="select s from Requisicao s where s.codigo = :codigo";

Logo, setInteger nao é indicado, seria indicado se voce usasse ?, pra indicar que essa interroacao é um inteiro.

mude para setParameter.

Fiz o q vc flw e deu erro… o codigo ficou assim:

public Requisicao buscarCodigoPendente(int codigo) {
		String hql="select s from Requisicao s where s.codigo = :codigo";
		Query consulta = this.session.createQuery(hql);
		consulta.setParameter("codigo", codigo);
		return (Requisicao) consulta.uniqueResult();
	}

tem varios setParameter la, eu testei com os 2 primeiros:

setParameter(int arg0, object arg1)
setParameter(String arg0, object arg1)

Continua dando erro…

R

O mesmo erro ?

tiago_

rof20004:
select s from Requisicao s where s.codigo like '1'

seu CODIGO é um int ou uma string ?

Meu codigo eh int !

tiago_

O erro aqui:

javax.faces.el.EvaluationException: java.lang.NullPointerException

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)

at javax.faces.component.UICommand.broadcast(UICommand.java:311)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: java.lang.NullPointerException

at requisicao.web.RequisicaoBean.salvar(RequisicaoBean.java:99)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at com.sun.el.parser.AstValue.invoke(AstValue.java:234)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)

 52 more
tiago_

Acabei de olhar no banco, o registro existe sim…

tiago_

Hebert Coelho:
Teve gente afirmando que o problema em tal linha, desculpe mas não tenho as bolas pra isso. :lol: :lol: :lol:

Seu erro está exatamente nessa linha: at requisicao.web.RequisicaoBean.salvar(RequisicaoBean.java:96)

O que tem aí?

Rpz, a linha 96 ta em branco :shock:

R

verifica esse metodo salvar, poste aqui.

tiago_

O metodo salvar retorna tudo no console certinho…
A unica coisa q n retorna eh a ultima parte do metodo (o q postei aqui)…

public String salvar() {	
		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance(); 
       
		UsuarioRN usuarioRN = new UsuarioRN();
		RequisicaoRN requisicaoRN = new RequisicaoRN();
		ItemRN itemRN = new ItemRN();
		ItemRequisicaoRN itemRequisicaoRN = new ItemRequisicaoRN();
		StatusRN statusRN = new StatusRN();
		ItemRequisicao itemRequisicao = new ItemRequisicao();
		
		/*
		 * Salvando na tabela requisicao
		 */
		
		//pega objeto usuario (usuarioLogado)
		Usuario usuarioLogado=  usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin()); //getUsuarioLogado
		System.out.println("objeto usuario:  " + usuarioLogado);
		requisicao.setUsuario(usuarioLogado);
	
		//Nova requisicao -> codigoStatus sempre = 1
		 codigoPendente = "pendente";
		 Status codigoStatus = statusRN.buscarPorNome(getCodigoPendente());
		 System.out.println(getCodigoPendente());
		 requisicao.setStatus(codigoStatus);
		
		 //GetDatahora do computador do cliente
		 Locale locale = new Locale("pt","BR"); 
		 GregorianCalendar calendar = new GregorianCalendar(); 
		 SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'",locale); 
		 String df = formatador.format(calendar.getTime());
		 System.out.println(formatador.format(calendar.getTime())); 
		 requisicao.setDataHora(df);
		 
		/*
		 * Salvando na tabela item_x_requisicao
		 */
		 
		//pega objeto item (item selecionado)
		Item  itemSelecionado= itemRN.buscarItem(itemBean.getItemm());
		System.out.println(itemSelecionado);
		itemRequisicao.setItem(itemSelecionado);
		//Linha 96
		 
		 // Pega codigo da requisicao
		 Requisicao codigoRequisicaoAtual = requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());
		 System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);
		 itemRequisicao.setRequisicao(codigoRequisicaoAtual);
		 itemRequisicaoRN.salvar(itemRequisicao);
	   	
		return "this.destinoSalvar";}

EDIT: Eu to salvando tranquilamente na tabela requisicao

tiago_

O return do console aqui:

objeto usuario: requisicao.usuario.Usuario@5773655c
pendente
30 de Novembro de 2012 - 11:37h
requisicao.item.Item@7526ca33

tiago_

E ai pessoal… Alguma luz ? :oops:

tiago_

Resolvido

tava faltando o requisicaoRN.salvar(requisicao);
Sem isso, nao tinha como pegar o codigo da requisicao…

...
requisicao.setDataHora(df);  
requisicaoRN.salvar(requisicao);  
/* 
* Salvando na tabela item_x_requisicao 
*/  
 ...

Muito obrigado pessoal, muito obrigado mesmo :smiley:

Criado 30 de novembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 20
Participantes 4