Boa tarde, estou com um erro em uma simples consulta onde tenho uma classe Categoria
e uma classe Produtos
, onde eu posso ter uma categoria para cada produto (ManyToOne)
, e varios produtos em uma categoria (OneToMany)
mas estou com erro de java.lang.NullPointerException
A consulta é pesquisar produtos em determinada categoria, onde a categoria é passada no construtor do método.
classe Produtos
:
package br.com.rprvidros.models;
import java.math.BigDecimal;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Produtos {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String descricao;
private String cor;
private String codigo_alternativo;
private Integer estoque_minimo;
private Integer estoque_maximo;
private String path;
private BigDecimal preco;
@ManyToOne
private Categoria categoria;
classe ProdutoDao
:
package br.com.rprvidros.daos;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import br.com.rprvidros.models.Produtos;
@Repository
@Transactional
public class ProdutoDao {
@PersistenceContext
private EntityManager manager;
public List<Produtos> listar() {
return manager.createQuery("select p from Produtos p").getResultList();
}
public List<Produtos> produtoCategoria(String categoria) {
return manager.createQuery("select p from Produtos p"
+ " join p.categoria c where c.nome =" + categoria).getResultList();
}
}
classe de teste:
package br.com.rprvidros.teste;
import java.util.List;
import br.com.rprvidros.daos.ProdutoDao;
import br.com.rprvidros.models.Produtos;
public class TestaCategoria {
public static void main(String[] args) {
List<Produtos> categoria = new ProdutoDao().produtoCategoria("Ferramentas");
for (Produtos produtos : categoria) {
System.out.println(produtos.getDescricao());
System.out.println(produtos.getCor());
}
}
}
mas me retorna o erro, muito obrigado.