De alguma forma a injeção do entity manager não está acontecendo no DAO, dando null pointer exception =/
Segue abaixo a classe que produz o entityManager
@Named
@RequestScoped
public class JPAUtil {
private static EntityManagerFactory emf = Persistence
.createEntityManagerFactory("livraria");
@Produces
@RequestScoped
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(@Disposes EntityManager em) {
em.close();
}
}
E o DAO
@Named
@RequestScoped
public class DAO<T> implements Serializable{
private static final long serialVersionUID = -7239289842557606353L;
private final Class<T> classe;
@Inject
private EntityManager em;
public DAO(Class<T> classe) {
this.classe = classe;
}
public void adiciona(T t) {
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
}
public void remove(T t) {
em.getTransaction().begin();
em.remove(em.merge(t));
em.getTransaction().commit();
}
public void atualiza(T t) {
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
}
public List<T> listaTodos() {
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).getResultList();
return lista;
}
public T buscaPorId(Integer id) {
T instancia = em.find(classe, id);
return instancia;
}
public int quantidadeDeElementos() {
long result = (Long) em.createQuery("select count(n) from " + classe.getSimpleName() + " n").getSingleResult();
return (int) result;
}
public int contaTodos() {
long result = (Long) em.createQuery("select count(n) from Livro n").getSingleResult();
return (int) result;
}
O erro é assim que a aplicação é iniciada
Caused by: java.lang.NullPointerException
at com.black.livraria.dao.DAO.listaTodos(DAO.java:44)
at com.black.livraria.dao.AutorDAO.listaTodos(AutorDAO.java:47)
at com.black.livraria.dao.AutorDAO$Proxy$_$$_WeldClientProxy.listaTodos(Unknown Source)
at com.black.livraria.bean.LivroBean.reset(LivroBean.java:43)
at com.black.livraria.bean.LivroBean.init(LivroBean.java:36)