Query retornando Null quando o parametro vem da tela e executa qdo passa fixo

0 respostas
Diego_Adriano
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
Criado 17 de março de 2012
Respostas 0
Participantes 1