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, porem 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.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 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 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: