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.
importjavax.persistence.EntityManager;
A minha chamada completa do método.
publicList<Escola> findAll() {List<Escola> listEscola = null;try{HttpSessionsession=(HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);LoginControleloginControle=(LoginControle)session.getAttribute("LoginControle");Loginlogin=loginControle.getLogin();Stringcomando="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";Queryquery=em.createQuery(comando); listEscola=query.getResultList();}catch(Exceptione){
e.printStackTrace();}finally{
em.close();}returnlistEscola; }
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)
rock
pjava:
Esse é o log do glassfish
GRAVE: java.lang.NullPointerException
at br.com.mosaicodigital.modelo.ListaEscola.findAll(ListaEscola.java:43)
Qual é a linha 43 do seu ListaEscola?
Independente disso, vc comentou que para aqui:
private EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();
imagino que a linha 43 seja esta:
Query query = em.createQuery(comando);
Seu EntityManager está null? Talvez algum erro de biblioteca ou configuração.
Se o EntityManager está null, qual o código do método ‘createEntityManager()’ da classe ‘EntityManagerFactorySingleton’ ?
Acho q tá faltando um setAttribute(“LoginControle”,meu_obj); Isso tá faltando, mas não sei onde colocar esse cara e o que vai em meu_obj. Que objeto devo colocar e onde vai o setAttribute(), em que momento, em que parte do sistema. Dúvidas, dúvidas, dúvidas.
M
marciavilaca
FacesContext… hum, vc esta usando JSF? posta sua classe LoginControle e Login
@Entity@Table(name="login")@SequenceGenerator(sequenceName="login_idlogin_seq",name="seqLogin",allocationSize=1)publicclassLogin{@Id@Column(name="idLogin")@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqLogin")privateintidLogin;@OneToOne@JoinColumn(name="idPessoa")privatePessoapessoa;@Column(name="login",unique=true)privateStringlogin;@Column(name="pwd")privateStringpwd;@ManyToOne@JoinColumn(name="idgrupo")privateGrupogrupo;@Transientprivatebooleanlogado;//getters/setters removido por espaçopublicbooleanisLogado(){returnlogado;}publicvoidsetLogado(booleanlogado){this.logado=logado;}publicLoginvalidaLogin(Loginlogin){EntityManagerem=EntityManagerFactorySingleton.getInstance().createEntityManager();em.getTransaction().begin();LoginloginValidado=null;try{LoginDAOloginDAO=newLoginDAO(em);List<Login>listLogin=loginDAO.buscaLogin(login.login);if(listLogin!=null&&listLogin.size()>0){LoginloginAchado=listLogin.get(0);StringpwdCriptografada=CriptografiaPwd.criptografar(login.getPwd());if(login.getPwd()!=null&&pwdCriptografada.equals(loginAchado.getPwd())){loginAchado.setLogado(true);loginValidado=loginAchado;}}em.getTransaction().commit();}catch(Exceptione){e.printStackTrace();if(em.getTransaction().isActive()){em.getTransaction().rollback();}}finally{em.close();}returnloginValidado;}}
caputojf1
Cara, você tá conseguindo rodar esse projeto assim?
Você já debugou??
Entra no método entrar
e veja o que ele retorna para loginValidado nessa linha…
Outra sugestão…
Sua @Entity com esse método validaLogin…
Esse método deveria ficar na sua classe de Controle e não numa entidade…
Posta aí…
Abs,
P
pjava
Trabalha eu e um colega e toda parte de login ele fez. Não que eu soubesse, pois eu não saberia e talvez fizesse igual. O projeto saiu de nosso escopo(controle) e agora to tentando apagar o incêndio. Tô apanhando muito e não dá para refazer. Só precios pegar o usuário logado hoje, nem que seja por gambi, só para ir pra teste e depois sim, com a cabeça no lugar fazer as alterações, a menos se a gambi for bem feita,rs.
caputojf1
Então vamos por partes…
Debuga esse método…
public Login validaLogin(Login login){
EntityManager em = EntityManagerFactorySingleton.getInstance().createEntityManager();
em.getTransaction().begin();
Login loginValidado = null;
try {
LoginDAO loginDAO = new LoginDAO(em);
List<Login> listLogin = loginDAO.buscaLogin(login.login);
if(listLogin != null && listLogin.size()> 0) {
Login loginAchado = listLogin.get(0);
String pwdCriptografada = CriptografiaPwd.criptografar(login.getPwd());
if(login.getPwd() != null && pwdCriptografada.equals(loginAchado.getPwd())){
loginAchado.setLogado(true);
loginValidado = loginAchado;
}
}
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
if(em.getTransaction().isActive()){
em.getTransaction().rollback();
}
}finally{
em.close();
}
return loginValidado; }
veja se ele tá recendo o login que foi enviado por parêmetro;
depois veja se a listLogin está vindo preenchida…
e veja se ele retorna um loginValidado preenchido…
Caso sim me avise que vou te dar uma dica…
P
pjava
Vou dando F5 e de repente para, não anda mais e quando começa o debug ele não para na linha que foi marcada. Há um jeito belê de se fazer um debug no eclipse?
caputojf1
F5 => Entra no método da linha.
F6 => Executa o método e vai para a próxima linha.
F8 => Libera o programa até o próximo BreakPoint.
Desmarque todos os breakpoints e coloque só na linha que você quer…
Depois selecione a variável q quer saber o valor clique com o botão direito Inspect…