Query não é executada
10/05/2011
0
Ele para aqui
private EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();
Parece não executar essa query, pois a lista vem vazia. Mas pelo log do Container a query é montada, tando que se carrego direta no banco funciona, logo o erro está na chamada.
import javax.persistence.EntityManager;
A minha chamada completa do método.
public List<Escola> findAll() { List <Escola> listEscola = null; try { HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle"); Login login = loginControle.getLogin(); String comando = "select distinct esc from Escola esc ,Matricula mat" + " where mat.idescola = esc.idescola" + " and mat.idpessoa = " + login.getPessoa().getIdPessoa() + " and mat.situacao = 'A' order by esc.nome"; Query query = em.createQuery(comando); listEscola = query.getResultList(); } catch (Exception e) { e.printStackTrace(); }finally{ em.close(); } return listEscola; }
Pjava
Posts
10/05/2011
Pjava
GRAVE: java.lang.NullPointerException
at br.com.mosaicodigital.modelo.ListaEscola.findAll(ListaEscola.java:43)
at br.com.mosaicodigital.controle.MostraEscolaAtiva.getEscolas(MostraEscolaAtiva.java:37)
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 javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:731)
at javax.faces.component.UIData.getDataModel(UIData.java:1798)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at javax.faces.component.UIData.visitColumnsAndColumnFacets(UIData.java:2078)
at javax.faces.component.UIData.visitTree(UIData.java:1431)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at com.sun.faces.application.view.StateManagementStrategyImpl.saveView(StateManagementStrategyImpl.java:149)
at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:133)
at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
10/05/2011
Robson Teixeira
primeiramente teste essa sua consulta direto no banco para ver se retorna algum resultado e se retornar tente assim
String comando = "select distinct esc from Escola esc ,Matricula mat" +
" where mat.idescola = esc.idescola" +
" and mat.idpessoa = :id" +
" and mat.situacao = 'A' order by esc.nome";
Query query = em.createQuery(comando);
query.setParameter("id",login.getPessoa().getIdPessoa());
listEscola = query.getResultList();
eu particularmente nunca fiz consulta JPQL do jeito que você fez mas assim você evita problemas de segurança como o SQL injection.
Lembrando que a query pode está correta mas pode ser que o banco não retorne nada.
qualquer coisa é so chamar.
att
robson
11/05/2011
Pjava
select distinct escola0_.idescola as idescola7_, escola0_.nome as nome7_, escola0_.telefone as telefone7_, escola0_.fax as fax7_, escola0_.email as email7_ from escola escola0_, matricula matricula1_ where matricula1_.idescola=escola0_.idescola and matricula1_.idpessoa=1 and matricula1_.situacao='A' order by escola0_.nome
11/05/2011
Davi Costa
Desconfio que seja alguma dessas duas;
LoginControle loginControle = (LoginControle) session.getAttribute("LoginControle");
Login login = loginControle.getLogin();
é isso mesmo?
Att Davi
Clique aqui para fazer login e interagir na Comunidade :)