Bem galera ..
Estou tentando efetuar uma query onde me deve retornar um produto, o problema estranho é que quando o Parâmetro (id do produto) vem da tela me é retornado NullPointerException mas quando passo o valor via código FIXO é efetuada a consulta, reparei que apesar de não ser retornado nada o parâmetro chega até a consulta.
Bean:
EstoqueRepository er = new EstoqueRepository(this.entityManager);
er.atualiza(entrada.getDadosEntrada());
Repository
public void atualiza(List<DadosEntrada> dados){
for (DadosEntrada de : dados){
AtualizaEstoque atualiza = new AtualizaEstoque();
atualiza.atualiza(de);
}
}
Atualiza
public void atualiza(DadosEntrada dados){
try {
System.out.println("AT. EST");
EstoqueRepository rep = new EstoqueRepository(this.entityManager);
Estoque prodEstoque = new Estoque();
System.out.println(dados.getProduto().getId());
System.out.println(dados.getProduto().getNome());
System.out.println("busca");
prodEstoque = rep.consultaPorProduto(dados.getProduto());
System.out.println("depois busca");
System.out.println(prodEstoque.getProduto().getId());
System.out.println(prodEstoque.getProduto().getNome());
prodEstoque.setPre_compra(dados.getVlrunit());
prodEstoque.setQuantidade(prodEstoque.getQuantidade() + dados.getQuantidade());
/*this.entityManager.merge(prodEstoque);
this.entityManager.flush();*/
} catch (NullPointerException e) {
e.printStackTrace();
}
}
Repository Consulta
public Estoque consultaPorProduto(Produto produto){
System.out.println("REP - CP >"+produto.getId());//CHEGA ATE A QUI
Query query = this.entityManager.createQuery("SELECT e FROM Estoque e" +
" WHERE e.produto.id =:produto");
query.setParameter("produto", produto.getId());
Estoque est = new Estoque();
est = (Estoque) query.getSingleResult();
System.out.println(est.getProduto().getNome());
return est;
}
REP - CP >2
java.lang.NullPointerException
at br.com.controleestoque.repository.EstoqueRepository.consultaPorProduto(EstoqueRepository.java:32)
Agora passando via código
Produto p = new Produto();
p.setId((long) 1);
System.out.println(estoqueRepository.consultaPorProduto(p));
Log:
REP - CP >1
Hibernate:
/* SELECT
e
FROM
Estoque e
WHERE
e.produto.id =:produto */ select
estoque0_.id as id14_,
estoque0_.pre_compra as pre2_14_,
estoque0_.pre_venda as pre3_14_,
estoque0_.produto as produto14_,
estoque0_.quantidade as quantidade14_
from
Estoque estoque0_
where
estoque0_.produto=? limit ?
TINTA BRANCA
br.com.controleestoque.model.Estoque@828c0e15