Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Query Retornando null

Olá, entendo que meu código está idêntico ao da video-aula, porém está dando nullPointerException no método listar() do dao. Estou disponibilizando o erro e o código. Obrigado

Erro URL: Error processing request Context Path:/casadocodigo Servlet Path:/livros/form.xhtml Path Info:null Query String:null Stack Trace javax.servlet.ServletException javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284) io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263) io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174) io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748)

Código AutorDao: package casadocodigo.dao;

import java.util.List;

import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;

import casadocodigo.model.Autor;

public class AutorDao {

@PersistenceContext private EntityManager manager;

public List listar(){ return manager.createQuery( "select a from Autor a", Autor.class).getResultList(); } } Código AdminLivrosBean package casadocodigo.beans;

import java.util.ArrayList; import java.util.List;

import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; import javax.transaction.Transactional;

import casadocodigo.dao.AutorDao; import casadocodigo.dao.LivroDao; import casadocodigo.model.Autor; import casadocodigo.model.Livro;

@Named @RequestScoped public class AdminLivrosBean {

private Livro livro = new Livro(); private AutorDao autorDao;

@Inject private LivroDao dao;

@Inject public List getAutores(){ return autorDao.listar(); }

private List autoresId = new ArrayList();

public List getAutoresId() { return autoresId; }

public void setAutoresId(List autoresId) { this.autoresId = autoresId; }

@Transactional public void salvar(){ for (Integer autorId: autoresId) { livro.getAutores().add(new Autor(autorId)); } dao.salvar(livro); System.out.println("Livro Cadastrado: " + livro); System.out.println("Livro Salvo com sucesso!!!"); }

public Livro getLivro() { return livro; }

public void setLivro(Livro livro) { this.livro = livro; }

}

2 respostas

código do form:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

solução!

Já descobri a resposta .... estava faltando o @Inject na criação do AutorDao e o @ApplicationScoped na classe do AutorDao.

Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software