Query não é executada

10/05/2011

0

Essa vquery parece não está sendo executada. Debuguei e não consigo chegar nela. Chega na chamada ao FactorySingleton ele não anda mais. Antes o debug reclamou de faltar o hibernate-entitymanager.jar. Adicionei e continuou a reclamar. Restartei o eclipse e agora ele para nesse método e não anda mais.
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

Pjava

Responder

Posts

10/05/2011

Pjava

Esse é o logo do glassfish
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)
Responder

10/05/2011

Robson Teixeira

Olá Pjava
    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
Responder

11/05/2011

Pjava

A query retorna, nesse caso 2 linhas(2 escolas). Inclusive a query que no log do GlassFish eu pego, ela também me retorna a mesma coisa. Essa é a query que eu peguei no log do glassfish. Essa query funciona. Ela é a execução da que está em código fonte.
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

Responder

11/05/2011

Davi Costa

Qual a linha 43 dessa classe?
Desconfio que seja alguma dessas duas;

LoginControle loginControle = (LoginControle)   session.getAttribute("LoginControle");
            Login login = loginControle.getLogin();

é isso mesmo?

Att Davi
Responder

25/05/2011

Dyego Carmo

Resolvido ? Se sim , poderia fechar ? Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar