Ir ao conteúdo
  • Cadastre-se

Java jpa+hibernate java web arrayindexoutofboundsexception: 0


Posts recomendados

Olá boa noite, estou implementando uma consulta em hibernate, quando executo a aplicação ao clickar no menu ele deveria chamar o metodo listarTodos e listar dentro de um panel e mostrar outros recursos, porém ao clickar no menu ele entrega: 
**Exception occurred while processing <veiculomanutencao:#{veiculoBean.iniciarBean}> java.lang.ArrayIndexOutOfBoundsException: 0**

O glass fish aponta o erro na linha 28 da classe VeiculoBean:

28: **veiculos = new GenericDAO<Veiculo>(Veiculo.class).listarTodos();**

No metodo iniciarBean() ao chamar ele peço para que ele adicione a veiculos um novo GenericDAO de veiculos trazendo a classe de veiculos e chamando o metodo listar.Todos da classe GenericDAO

O glassfish aponta o erro na minha 55 onde crio o metodo List<T> listarTodos() na classe GenericDAO:

No metodo listarTodos() chamo a classe JPAUtil para interagir com o contenxto: **EntityManager em = JPAUtil.getEntityManager();**

coloco a consulta dentro da lista resultados
55: **List<T> resultados = em.createQuery("SELECT v FROM " + classe.getName()+ " v", classe).getResultList();** 

 

**VeiculoBean.java:**

    package com.fvc.bean;

    import com.fvc.dao.GenericDAO;
    import com.fvc.dao.VeiculoDAO;
    import com.fvc.model.Veiculo;
    import java.io.Serializable;
    import java.util.List;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.FacesContext;

    @ManagedBean
    @SessionScoped
    public class VeiculoBean implements Serializable
    {
        
        private static final long serialVersionUID = -1900445102117491204L;
        
        private Veiculo veiculo;
        private List<Veiculo> veiculos;
        
        private Veiculo veiculoExclusao;    
        
        public void iniciarBean()
        {
            
            veiculos = new GenericDAO<Veiculo>(Veiculo.class).listarTodos();
            
        }        
        
        public void novoVeiculo()
        {
            
            veiculo = new Veiculo();
            
        }  
        
        public void salvar() throws InterruptedException
        {
            //sleep de 3 segundos na operação
            Thread.sleep(3000);
            new GenericDAO<Veiculo>(Veiculo.class).salvar(veiculo);
            veiculos = new GenericDAO<Veiculo>(Veiculo.class).listarTodos();
            veiculos = null;
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Veiculo inserido com sucesso"));
        }        
        
        public void editar(Veiculo veiculo)
        {
            
            this.veiculo = veiculo;
            
        }        
        
        public void prepararExclusao(Veiculo veiculo)
        {
            
            this.veiculoExclusao = veiculo;
            
        }
        
        public void excluir()
        {
            
            new VeiculoDAO().excluir(veiculoExclusao);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Veiculo excluído com sucesso!"));
            veiculos = new VeiculoDAO().listarTodos();
            
        }        
        
        public void voltar()
        {
            
            veiculo=null;
            
        }
        
        
        public Veiculo getVeiculo() {
            return veiculo;
        }

        public void setVeiculo(Veiculo veiculo) {
            this.veiculo = veiculo;
        }

        public List<Veiculo> getVeiculos() {
            return veiculos;
        }

        public void setVeiculos(List<Veiculo> veiculos) {
            this.veiculos = veiculos;
        }
        
        public Veiculo getVeiculoExclusao() {
            return veiculoExclusao;
        }

        public void setClienteExclusao(Veiculo veiculoExclusao) {
            this.veiculoExclusao = veiculoExclusao;
        }
            
        
    }

**GenericDAO:**

    package com.fvc.dao;

    import java.util.List;
    import javax.persistence.EntityManager;


    public class GenericDAO<T> 
    {
        
        private final Class<T> classe;
        
        public GenericDAO(Class<T> classe)
        {
            
            this.classe = classe;
            
        }        
        
        
        public void salvar(T t)
        {
            
            EntityManager em = JPAUtil.getEntityManager();
            
            em.getTransaction().begin();
            
            em.merge(t);
            
            em.getTransaction().commit();
            
            em.close();
            
        }
        
        public void excluir(T t)
        {
            
            EntityManager em = JPAUtil.getEntityManager();
            
            em.getTransaction().begin();
            
            em.remove(t);
            
            em.getTransaction().commit();
            
            em.close();
            
        }
        
        public List<T> listarTodos()
        {
            
            EntityManager em = JPAUtil.getEntityManager();
            
            List<T> resultados = em.createQuery("SELECT v FROM " + classe.getName()+ " v", classe).getResultList();   
            
            em.close();
            
            return resultados;
        }
        
        public T obterporPlaca(String placa)
        {
            
            EntityManager em = JPAUtil.getEntityManager();
            
            T t = em.createQuery("from " + classe.getName() + " where placa = :id", classe).setParameter("placa", placa).getSingleResult();
            
            em.close();
            
            return t;
            
        }        
        
        
    }

**Tabela Veiculo:**
 

 

TABELABANCO.png

Link para o comentário
Compartilhar em outros sites

1 hora atrás, yuseirender disse:
veiculos = new GenericDAO<Veiculo>(Veiculo.class).listarTodos()

Depure o método listarTodos para descobrir o porque dele estar retornando um objeto inválido.

 

Se possível, poste o StackTrace completo do problema para podermos analisar melhor.

Link para o comentário
Compartilhar em outros sites

- Stack Trace

com.ocpsoft.pretty.PrettyException: Exception occurred while processing <veiculomanutencao:#{veiculoBean.iniciarBean}> java.lang.ArrayIndexOutOfBoundsException: 0 at com.ocpsoft.pretty.faces.beans.ActionExecutor.executeActions(ActionExecutor.java:71) at com.ocpsoft.pretty.faces.event.PrettyPhaseListener.processEvent(PrettyPhaseListener.java:131) at com.ocpsoft.pretty.faces.event.PrettyPhaseListener.afterPhase(PrettyPhaseListener.java:117) at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:188) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:106) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:133) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:201) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:670) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:338) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:817) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:683) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:519) at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:490) at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:372) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:322) at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:463) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573) at java.lang.Thread.run(Thread.java:745) Caused by: javax.el.ELException: java.lang.ArrayIndexOutOfBoundsException: 0 at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at com.ocpsoft.pretty.faces.util.FacesElUtils.invokeMethod(FacesElUtils.java:70) at com.ocpsoft.pretty.faces.util.FacesElUtils.invokeMethod(FacesElUtils.java:62) at com.ocpsoft.pretty.faces.beans.ActionExecutor.executeActions(ActionExecutor.java:56) ... 49 more Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at org.hibernate.jpa.spi.AbstractEntityManagerImpl.resultClassChecking(AbstractEntityManagerImpl.java:362) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:344) at com.fvc.dao.GenericDAO.listarTodos(GenericDAO.java:55) at com.fvc.bean.VeiculoBean.iniciarBean(VeiculoBean.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181) ... 54 more

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!