Null pointer exeption

e ai galera boa noite… seguinte tenho esse metodo aqui

HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
		fornecedores = hibernatePessoas.getFornecedores();
		fornecedor.setNome("Todos");
		fornecedores.add(fornecedor);
		return fornecedores;

mas quando eu adiciono esse objeto aqui

fornecedor.setNome(“Todos”);
fornecedores.add(fornecedor);

ele da java.lang.NullPointerException na hora de eu submeter o formulario

jsf

<p:selectOneMenu value="#{produtoBean.fornecedor}"
							style="width: 200px" converter="fornecedorConverter">
							<f:selectItems value="#{produtoBean.fornecedores}"
								var="fornecedor" itemLabel="#{fornecedor.nome}"
								itemValue="#{fornecedor}" />
						</p:selectOneMenu>

Um desses dois caras (ou os dois) estão null.

como assim:?

fornecedores.add(fornecedor); 

o fornecedor deve estar nullo

faz um teste, antes de chamar o fornecedores.add(fornecedor);

use:

system.out.println("fornecedor: "+fornecedor);

e veja o que retorna

carra ele não ta null pq ele mostra na lista no selectOneMenu só q quando eu aperto o botão salvar da o null pointer

meu jsf

		<!-- Começo Edição de Preços -->

				<p:dialog header="Ajustar Preços" widgetVar="dlg7" resizable="false"
					width="450" height="230" modal="true" id="dialog7">
					<br></br>
					<h:panelGrid columns="2" cellspacing="10">

						<h:outputLabel value="Categoria" />

						<p:selectOneMenu value="#{produtoBean.categoria}"
							style="width: 200px" converter="categoriaConverter">
							<f:selectItems value="#{produtoBean.categorias}" var="categoria"
								itemLabel="#{categoria.nomeCategoria}" itemValue="#{categoria}" />
						</p:selectOneMenu>

						<h:outputLabel value="Fornecedor" />

						<p:selectOneMenu value="#{produtoBean.fornecedor}"
							style="width: 200px" converter="fornecedorConverter">
							<f:selectItems value="#{produtoBean.fornecedores}"
								var="fornecedor" itemLabel="#{fornecedor.nome}"
								itemValue="#{fornecedor}" />
						</p:selectOneMenu>

						<h:outputLabel value="Aplicar Alteração No:" />
						<p:selectOneRadio id="options"
							value="#{produtoBean.alteracaoPreco}">
							<f:selectItem itemLabel="Custo do Produto" itemValue="custo" />
							<f:selectItem itemLabel="Preço de Venda" itemValue="venda" />
						</p:selectOneRadio>
					</h:panelGrid>

					<h:panelGrid columns="6" cellspacing="10">
						<p:spacer height="0" width="20px" />
						<h:outputLabel value="Aplicar Em: " style="text-align: left" />
						<p:spacer height="0" width="20px" />
						<p:inputText value="#{produtoBean.porcentagemAlteracao}"
							style="width: 60px; align: left" />
						<p:spacer height="0" width="2px" />
						<h:outputLabel value=" %" />

					</h:panelGrid>
					<br></br>
					<p:commandButton oncomplete="confirmation1.show()"
						icon="ui-icon-check" style="width: 40px" />

				</p:dialog>

				<p:confirmDialog id="confirmDialog1" message="Confirma Alteração?"
					severity="alert" widgetVar="confirmation1">

					<p:commandButton id="confirm1" value="Sim" update="tbl1, messages"
						oncomplete="confirmation1.hide()"
						actionListener="#{produtoBean.atualizarPrecos}">

					</p:commandButton>
					<p:commandButton id="decline1" value="Não"
						onclick="confirmation1.hide()" type="button" />
				</p:confirmDialog>

				<!-- Fim Edição de Preços -->

o método getFornecedores() retorna o que quando não encontra nada? null ou uma lista vazia?

Um método que retorna uma lista, sempre deve retornar uma lista vazia quando não encontra nada, nunca null.

michelorth_92,
Se possível mostra um pouco mais do código.
Onde e como vc está declarando a varíavel fornecedores ?

   HibernateDao&lt;Pessoa&gt; hibernatePessoas = new HibernateDao&lt;Pessoa&gt;(Pessoa.class);  
   fornecedores = hibernatePessoas.getFornecedores();  
   fornecedor.setNome("Todos");  
   fornecedores.add(fornecedor);  
   return fornecedores;  

ta ai meu bean inteiro

package br.com.vendas.controller;

import java.io.Serializable;
import java.util.ArrayList;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.vendas.beans.Categoria;
import br.com.vendas.beans.Pessoa;
import br.com.vendas.beans.Produto;
import br.com.vendas.dao.HibernateDao;

@SessionScoped
@ManagedBean
public class ProdutoBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private HibernateDao<Produto> produtoDao = new HibernateDao<Produto>(Produto.class);
	private Produto produto = new Produto();
	private List<Produto> produtos = new ArrayList<Produto>();
	private Produto produtoUpdate = new Produto();
	private String filtro = new String();
	private String param = new String();
	private Categoria categoria = new Categoria();
	private List<Categoria> categorias = new ArrayList<Categoria>();
	private Pessoa fornecedor = new Pessoa();
	private List<Pessoa> fornecedores = new ArrayList<Pessoa>();
	private String alteracaoPreco = new String();
	private Float porcentagemAlteracao = new Float(0);

	public void salvar() {
		try {
			produtoDao.salvar(produto);
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Salvo!", " "));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! " + e, " "));
		} finally {
			produto = new Produto();
			produtoDao = new HibernateDao<Produto>(Produto.class);
		}
	}

	public void deletar() {
		try {
			produtoDao.deletar(produto);
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Deletado!", " "));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
		} finally {
			produto = new Produto();
			produtoDao = new HibernateDao<Produto>(Produto.class);
		}
	}

	public List<Produto> getProdutos() {
		try {
			if (filtro.equals("codigoBarras")) {
				produtos = produtoDao.getFiltro("from Produto as prod where prod.codigoBarras like :codigoBarras", param, filtro);
			} else if (filtro.equals("descricao")) {
				produtos = produtoDao.getFiltro("from Produto as prod where prod.descricao like :descricao", param, filtro);
			} else {
				produtos = produtoDao.getBeans();
			}
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
		}
		return produtos;
	}

	public void atualizar() {
		try {
			produtoDao.atualizar(produtoUpdate);
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Atualizado!", " "));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
		} finally {
			produtoUpdate = new Produto();
			produtoDao = new HibernateDao<Produto>(Produto.class);
		}

	}

	public void limpar() {
		produto = new Produto();
		produtoUpdate = new Produto();
	}

	public void atualizarPrecos() {
		try {

			porcentagemAlteracao = porcentagemAlteracao / 100;

			if (alteracaoPreco.equals("custo")) {

				if (categoria.getNomeCategoria().equals("Todos") && (fornecedor.getNome().equals("Todos"))) {

					produtos = produtoDao.getBeans();

					for (int i = 0; i < produtos.size(); ++i) {
						produto = produtos.get(i);
						produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
						produtoDao.atualizar(produto);
					}

				} else if (categoria.getNomeCategoria().equals("Todos") && fornecedor.getNome() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = produtos.get(i);
						produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
						produtoDao.atualizar(produto);
					}

				} else if (fornecedor.getNome().equals("Todos") && categoria.getNomeCategoria() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='" + categoria.getIdCategoria() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = produtos.get(i);
						produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
						produtoDao.atualizar(produto);
					}

				} else if (fornecedor.getNome() != "Todos" && categoria.getNomeCategoria() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "' AND id_categoria='" + categoria.getIdCategoria() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = produtos.get(i);
						produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
						produtoDao.atualizar(produto);
					}

				}
			} else if (alteracaoPreco.equals("venda")) {

				if (categoria.getNomeCategoria().equals("Todos") && (fornecedor.getNome().equals("Todos"))) {

					produtos = produtoDao.getBeans();

					for (int i = 0; i < produtos.size(); ++i) {
						produto = new Produto();
						produto = produtos.get(i);
						produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
						produtoDao.atualizar(produto);
					}

				} else if (categoria.getNomeCategoria().equals("Todos") && fornecedor.getNome() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = new Produto();
						produto = produtos.get(i);
						produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
						produtoDao.atualizar(produto);
					}

				} else if (fornecedor.getNome().equals("Todos") && categoria.getNomeCategoria() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='" + categoria.getIdCategoria() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = new Produto();
						produto = produtos.get(i);
						produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
						produtoDao.atualizar(produto);
					}

				} else if (fornecedor.getNome() != "Todos" && categoria.getNomeCategoria() != "Todos") {

					produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "' AND id_categoria='" + categoria.getIdCategoria() + "'");

					for (int i = 0; i < produtos.size(); ++i) {
						produto = new Produto();
						produto = produtos.get(i);
						produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
						produtoDao.atualizar(produto);
					}
				}

			}

			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Preços Atualizados!", " "));
		} catch (Exception e) {
			System.out.println(e);
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
		} finally {
			alteracaoPreco = new String();
			porcentagemAlteracao = new Float(0);
			categoria = new Categoria();
			fornecedor = new Pessoa();
			produto = new Produto();
		}
	}

	public List<Categoria> getCategorias() {
		HibernateDao<Categoria> hibernateCat = new HibernateDao<Categoria>(Categoria.class);
		categorias = hibernateCat.getBeans();
		return categorias;
	}

	public List<Pessoa> getFornecedores() {
		HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
		fornecedores = hibernatePessoas.getFornecedores();
		return fornecedores;
	}

	public void setCategorias(List<Categoria> categorias) {
		this.categorias = categorias;
	}

	public HibernateDao<Produto> getProdutoDao() {
		return produtoDao;
	}

	public void setProdutoDao(HibernateDao<Produto> produtoDao) {
		this.produtoDao = produtoDao;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}

	public Produto getProdutoUpdate() {
		return produtoUpdate;
	}

	public void setProdutoUpdate(Produto produtoUpdate) {
		this.produtoUpdate = produtoUpdate;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public String getFiltro() {
		return filtro;
	}

	public void setFiltro(String filtro) {
		this.filtro = filtro;
	}

	public String getParam() {
		return param;
	}

	public void setParam(String param) {
		this.param = param;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public Pessoa getFornecedor() {
		return fornecedor;
	}

	public void setFornecedor(Pessoa fornecedor) {
		this.fornecedor = fornecedor;
	}

	public void setFornecedores(List<Pessoa> fornecedores) {
		this.fornecedores = fornecedores;
	}

	public String getAlteracaoPreco() {
		return alteracaoPreco;
	}

	public void setAlteracaoPreco(String alteracaoPreco) {
		this.alteracaoPreco = alteracaoPreco;
	}

	public Float getPorcentagemAlteracao() {
		return porcentagemAlteracao;
	}

	public void setPorcentagemAlteracao(Float porcentagemAlteracao) {
		this.porcentagemAlteracao = porcentagemAlteracao;
	}

}

Sensacional, mas o código necessário é o do getFornecedores().

o que ele está retornando ?

ele retorna uma lista certinho o problema é que assim funciona

public List<Pessoa> getFornecedores() {
		HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
		fornecedores = hibernatePessoas.getFornecedores();
		return fornecedores;
	}

mas eu preciso assim

public List<Pessoa> getFornecedores() {
		HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
		fornecedores = hibernatePessoas.getFornecedores();

fornecedor.setNome("Todos");
fornecedores.add(fornecedor);
		return fornecedores;
	}

cara, julgando pela alteração no método que fez ele lançar uma NullPointerException, a única coisa que posso dizer é que seu fornecedor não está inicializado.

caralho!
amigo na boa, refatora seu código, ta um espaguete que só!
artigo que pode lhe ajudar http://msdn.microsoft.com/pt-br/magazine/cc947917.aspx

Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores();

[quote=satangoss]Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores(); [/quote]

De acordo com ele o método funciona, o que eu acredito que ele está tentando fazer, é adicionar um Fornecedor “Todos” à lista, além daqueles que ja vem do banco. Provavelmente só para popular algo na View.

[quote=digaoneves][quote=satangoss]Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores(); [/quote]

De acordo com ele o método funciona, o que eu acredito que ele está tentando fazer, é adicionar um Fornecedor “Todos” à lista, além daqueles que ja vem do banco. Provavelmente só para popular algo na View.[/quote]
Ok então possivelmente ele deve estar usando um selectOneMenu, com isso basta adicionar dentro do componente um item como :

<f:selectItem itemLabel="Todos" itemValue="0"/>

e só enviar o conteúdo da lista no getFornecedores

public List<Pessoa> getFornecedores() { HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class); return hibernatePessoas.getFornecedores(); }