Java.lang.NullPointerException[RESOLVIDO]

OI pessoal tudo bem…to tendo um problema aqui em um projeto de tg quando mando cadastrar o fornecedor e qualquer um que esteja ligado por herança na superclasse Pessoa, utilizando jsf 2.0 e hibernate se alguem poderia me ajuda ficarEI muito agradecido…DESDE JA AGRADEÇO!!

O erro que esta dando é esse QUANDO TENTO CADASTRAR O FORNECEDOR(SO POSTEI DO FORNECEDOR PQ AS COUTRAS CLASSES SAO IGUAIS, SE RESOLVER ESSE RESOLVO OS OUTROS…)

ERRO

LOG APACHE TOMCAT 7.0.27.0

04/11/2012 14:15:26 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/EcommerceEtelj] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkNaturalId(DefaultFlushEntityEventListener.java:89)
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:169)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at br.com.ecommerceetelj.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

APACHE TOMCAT 7.0.27.0

Hibernate:
/* get current natural-id state br.com.ecommerceetelj.model.Fornecedor */ select
fornecedor_.email_pessoa as email7_0_
from
fornecedor fornecedor_
where
fornecedor_.id_pessoa=?
04/11/2012 14:16:29 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:974)
at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1391)
at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1364)
at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1444)
at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1910)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Exception in thread “Timer-0” java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask
at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:974)
at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1391)
at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1364)
at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1444)
at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1910)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
… 8 more


BANCO

CREATE TABLE pessoa(
id_pessoa serial NOT NULL,
nome_pessoa character varying(100) NOT NULL,
endereco_pessoa character varying(200),
email_pessoa character varying(100) NOT NULL unique,
senha_pessoa character varying(45) NOT NULL,
cidade_pessoa character varying(100) NOT NULL,
estado_pessoa character varying(2) NOT NULL,
data_nascimento_pessoa date NOT NULL,
ceppessoa_pessoa character varying(9) NOT NULL,
telefone_pessoa character varying(20),
cpfcnpj_pessoa character varying(14) NOT NULL,
ativo_usuario_pessoa boolean, --nova mudança aqui, adiçao do campo. 
CONSTRAINT pk_pessoa PRIMARY KEY(id_pessoa)
);


CREATE TABLE fornecedor(
inscrEstadual_fornecedor character varying(14) not null,
razaoSocial_fornecedor character varying(45) not null,
responsavel_fornecedor character varying(100) not null
)inherits (pessoa);


CREATE TABLE cliente(
dataCadastro_cliente date not null
)inherits (pessoa);


CREATE TABLE administrador(
setor_admin character varying(100) not null,
login_administrador varchar(45) not null
)inherits (pessoa);

CREATE TABLE funcionario(
setor_funcionario character varying(100) not null,
cargo_funcionario character varying(100) not null
)inherits (pessoa);

--==================================================================


MODEL PESSOA(SUPER CLASSE)

package br.com.ecommerceetelj.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.NaturalId;

/**
 *
 * @author V4GN3R TSI FATEC
 */
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@SequenceGenerator(name = "seq_pessoa",
        sequenceName = "pessoa_id_pessoa_seq", 
        allocationSize = 1, initialValue = 1)

public class Pessoa implements Serializable {
   
    private static final long serialVersionUID = -8067182859748424879L;
    
    @Id
    @GeneratedValue(generator="seq_pessoa")
    @Column(name = "id_pessoa")
    private Integer idPessoa;
    @Column(name = "nome_pessoa", length = 100, nullable = false)
    private String nomePessoa;
    @Column(name = "endereco_pessoa", length = 200, nullable = false)
    private String enderecoPessoa;
    @NaturalId
    @Column(name = "email_pessoa", length = 100, nullable = false)
    private String emailPessoa;
    @Column(name = "senha_pessoa", length = 45, nullable = false)
    private String senhaPessoa;
    @Column(name = "cidade_pessoa", length = 100, nullable = false)
    private String cidadePessoa;
    @Column(name = "estado_pessoa", length = 2, nullable = false)
    private String estadoPessoa;
    @Temporal(javax.persistence.TemporalType.DATE)
    @Column(name="data_nascimento_pessoa", nullable = false)
    private Date dataNascimentoPessoa;
    @Column(name = "cep_pessoa", length = 9, nullable = false)
    private String cepPessoaPessoa; 
    @Column(name = "telefone_pessoa", length = 20, nullable = true)
    private String telefonePessoa;
    @Column(name = "cpfcnpj_pessoa", length = 14, nullable = false)
    private String cpfCnpjPessoa;
    @Column(name = "ativo_usuario_pessoa")
    private boolean ativoUsuarioPessoa;

   
    

//CONSTRUTORES COM E SEM PARAMETROS
    public Pessoa() {
    }

    
 public Pessoa(Integer idPessoa, String nomePessoa, String enderecoPessoa, String emailPessoa, String senhaPessoa, String cidadePessoa, String estadoPessoa, Date dataNascimentoPessoa, String cepPessoaPessoa, String telefonePessoa, String cpfCnpjPessoa, boolean ativoUsuarioPessoa) {
        this.idPessoa = idPessoa;
        this.nomePessoa = nomePessoa;
        this.enderecoPessoa = enderecoPessoa;
        this.emailPessoa = emailPessoa;
        this.senhaPessoa = senhaPessoa;
        this.cidadePessoa = cidadePessoa;
        this.estadoPessoa = estadoPessoa;
        this.dataNascimentoPessoa = dataNascimentoPessoa;
        this.cepPessoaPessoa = cepPessoaPessoa;
        this.telefonePessoa = telefonePessoa;
        this.cpfCnpjPessoa = cpfCnpjPessoa;
        this.ativoUsuarioPessoa = ativoUsuarioPessoa;
    }
   
    //=============GETTERS E SETTERS================================================  

  //EQUALS E HASHCODE=============================================================


============================================================================

MODEL FUNCIONARIO

@Entity
@Table(name = "funcionario")
public class Funcionario extends Pessoa{

    private static final long serialVersionUID = -5924963269584576388L;
    
    @Column(name = "setor_funcionario", length = 100, nullable = false)
    private String setorFuncionario;
    @Column(name = "cargo_funcionario", length = 100, nullable = false)
    private String cargoFuncionario;

    
 //CONSTRUTORES
      public Funcionario() {
          this("","",1,"","","","","","",null,"","","",false);
    }

    public Funcionario(String setorFuncionario, String cargoFuncionario, Integer idPessoa, String nomePessoa, 
            String enderecoPessoa, String emailPessoa, String senhaPessoa, String cidadePessoa, String estadoPessoa,
            Date data_nascimento_pessoa, String ceppessoaPessoa, String telefonePessoa, String cpfCnpjPessoa,
            boolean ativo_usuario_pessoa) {
        super(idPessoa, nomePessoa, enderecoPessoa, emailPessoa, senhaPessoa, cidadePessoa, estadoPessoa, 
                data_nascimento_pessoa, ceppessoaPessoa, telefonePessoa, cpfCnpjPessoa, ativo_usuario_pessoa);
        this.setorFuncionario = setorFuncionario;
        this.cargoFuncionario = cargoFuncionario;
    }
    

//==========GETTERS E SETTERS===================================================

//==========EQUALS E HASHCODE==================================================

===========================================================================


FORNECEDOR DAOIMPL

public class FornecedorDAOImpl implements FornecedorDAO {

    private Session session;

    public void setSession(Session session) {
        this.session = session;
    }

    @Override
    public void salvar(Fornecedor fornecedor) {
        this.session.save(fornecedor);
    }

    @Override
    public void atualizar(Fornecedor fornecedor) {
        this.session.update(fornecedor);
    }

    @Override
    public void excluir(Fornecedor fornecedor) {
        this.session.delete(fornecedor);
    }

    @Override
    public Fornecedor carregar(int id_pessoa) {
        return (Fornecedor) this.session.get(Fornecedor.class, id_pessoa);
    }

    @Override
    public List<Fornecedor> listar() {
        return this.session.createCriteria(Fornecedor.class).list();
    }
}

========================================================================

FORNECEDORBEAN

/**
 *
 * @author V4GN3R TSI FATEC
 */
@ManagedBean(name = "fornecedorBean")
@RequestScoped
public class FornecedorBean {

    private Pessoa pessoa = new Pessoa();
    private String destinoSalvarFornecedor;
    private Fornecedor fornecedor = new Fornecedor();
    private List<Fornecedor> lista;
    private String confirmaSenha;

    public String novo() {
        this.setDestinoSalvarFornecedor("sucessofornecedor");
        this.fornecedor = new Fornecedor();
        this.fornecedor.setAtivoUsuarioPessoa(true);
        this.setFornecedor(new Fornecedor());
        return "/admin/cadastrarfornecedor";

    }

    public String salvar() {
        
         FacesContext context = FacesContext.getCurrentInstance();
        String senha = this.fornecedor.getSenhaPessoa();
        if (!senha.equals(this.confirmaSenha)) {
            FacesMessage facesMessage = new FacesMessage("As senhas não conferem!");
            context.addMessage(null, facesMessage);
            return null;
        }

        FornecedorRN fornecedorRN = new FornecedorRN();
        fornecedorRN.salvar(getFornecedor());
        return destinoSalvarFornecedor;//retorna para a pagina sucessofornecedor.xhtml
    }
    
    
    //METODO ATIVAR USUARIO, VERIFICA SE O FORNECEDOR ESTA ATIVO OU INATIVO, MUDA O STATUS
    public String ativarUsuario() {
        if (this.fornecedor.isAtivoUsuarioPessoa()) {
            this.fornecedor.setAtivoUsuarioPessoa(false);
        } else {
            this.fornecedor.setAtivoUsuarioPessoa(true);
        }
        FornecedorRN fornecedorRN = new FornecedorRN();
       fornecedorRN.salvar(this.fornecedor);
        this.lista = null;
        return null;
    }
    
 

    //METODO LISTAR
    //vai no banco e pega todos as categorias cadastrados
    //MANDA PARA O DATATABLE 
    public List<Fornecedor> getLista() {
        if (this.lista == null) {
            FornecedorRN fornecedorRN = new FornecedorRN();
            this.lista = fornecedorRN.listar();
        }
        return this.lista;
    }

    //METODO EXCLUIR 
    public String excluir() {
        FornecedorRN fornecedorRN = new FornecedorRN();
        fornecedorRN.excluir(this.getFornecedor());
        this.lista = null;
        return null;
    }

    //METODO EDITAR
    public String editar() {
        this.confirmaSenha = this.fornecedor.getSenhaPessoa();
        // return "/Publico/cadastrarcategoria";  
        return "/admin/cadastrarfornecedor";
    }

//=======GETTERS E SETTERS====================================================== 



=================================================================================

FORNECEDORRN(CONTROLLER)


public class FornecedorRN {
    
    private FornecedorDAO fornecedorDAO;
    
    public FornecedorRN(){
      this.fornecedorDAO = DAOFactory.criarFornecedorDAO();
    }
    
    
    //METODO SALVA E ATUALIZA
    public void salvar(Fornecedor fornecedor) {
        Integer id_fornecedor = fornecedor.getIdPessoa();
        if (id_fornecedor == null || id_fornecedor == 0) {
            this.fornecedorDAO.salvar(fornecedor);            
        } else {
            this.fornecedorDAO.atualizar(fornecedor);
        }        
    }
    
    
     //METODO LISTAR
    public List<Fornecedor> listar() {
        return this.fornecedorDAO.listar();
    }
    
    //METODO EXCLUIR
    public void excluir(Fornecedor fornecedor) {
        this.fornecedorDAO.excluir(fornecedor);
    }
    
    //METODO CARREGAR
    public Fornecedor carregar(Integer id_fornecedor) {
        return this.fornecedorDAO.carregar(id_fornecedor);
    }
    
    
 /=================================================================================

HIBERNATE.CFG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/ecommerceEtelj</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.connection.password">200297</property>
    
    <!--Adicionar config do pool de conexão C3P0 -->
    
    <property name="hibernate.current_session_context_class">thread</property>
    
    <!--Criando a  POOL  de Conexões utilizando a biblioteca C3P0 -->
    <property name="hibernate.c3p0.min_size">5</property><!--MINIMO DE CONEXÕES -->
    <property name="hibernate.c3p0.max_size">20</property><!--MAXIMO DE CONEXÕES -->
    <property name="hibernate.c3p0.timeout">300</property><!--TEMPO MAXIMO LIMITE -->
    <property name="hibernate.c3p0.max_statements">50</property><!--MAXIMO DE STMT -->
    <property name="hibernate.c3p0.idle_test_period">3000</property><!--TEMPO MAXIMO DE INATIVIDADE -->
    
    <!--CONFIGURAÇÃO DE DEBUG -->
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <property name="hibernate.generate_statistics">true</property>
    <property name="hibernate.use_sql_comments">true</property>
    
   <!--EXEMPLO MAPEAMENTO DA CLASSE --> 
   <!-- <mapping class="br.com.projetofinanceiro.model.Usuario"/> -->
   
   <!--MAPEAMENTO DAS CLASSES LIGADOS POR HERANÇA -->
   <mapping class="br.com.ecommerceetelj.model.Pessoa"/>
   <mapping class="br.com.ecommerceetelj.model.Fornecedor"/>
   <mapping class="br.com.ecommerceetelj.model.Cliente"/>    
   <mapping class="br.com.ecommerceetelj.model.Funcionario"/>
   <mapping class="br.com.ecommerceetelj.model.Administrador"/> 
   
   <!--MAPEAMENTOS DAS CLASSES NORMAIS - SEM HERANÇA -->
   <mapping class="br.com.ecommerceetelj.model.Categoria"/>
   <mapping class="br.com.ecommerceetelj.model.Produto"/> 
   <mapping class="br.com.ecommerceetelj.model.ContaPagar"/>
   <mapping class="br.com.ecommerceetelj.model.ContaReceber"/>  
   <mapping class="br.com.ecommerceetelj.model.ItensMateriaPrima"/>
   <mapping class="br.com.ecommerceetelj.model.ItensPedido"/>
   <mapping class="br.com.ecommerceetelj.model.MateriaPrima"/>
   <mapping class="br.com.ecommerceetelj.model.MovimentacaoEstoque"/>
   <mapping class="br.com.ecommerceetelj.model.Pedido"/>
   <mapping class="br.com.ecommerceetelj.model.PedidoCompra"/>
   
  
    
  </session-factory>
</hibernate-configuration>


==================================================================================

VIEW(FORMULARIO)   

<h:body>
        
         <h1>Cadastrar Fornecedor</h1>

        <h:form id="cadastrarfornecedor">

            <h:messages/>
            <h:inputHidden value="#{fornecedorBean.fornecedor.idPessoa}"/>            
            <h:inputHidden value="#{fornecedorBean.destinoSalvarFornecedor}"/><!--resolve o problema da variavel destinoSalvar ser limpa -->


            <h:panelGrid columns="2">
                
                
                <h:outputLabel value="Nome: " for="nome"/>
                <h:inputText id="nome" label="Nome" value="#{fornecedorBean.fornecedor.nomePessoa}" size="30" maxlength="100" required="true"
                             requiredMessage="O nome do funcionario é obrigatório!!"><f:validateLength minimum="3" maximum="100"/>
                </h:inputText>
                
                <h:outputLabel value="Endereço: " for="endereco"/>
                <h:inputText id="endereco" label="Endereço" value="#{fornecedorBean.fornecedor.enderecoPessoa}" size="30" maxlength="200" required="true"
                             requiredMessage="O endereço é obrigatório!!"><f:validateLength minimum="3" maximum="200"/>
                </h:inputText>
                
                <h:outputLabel value="Email" for="email"/>
                <h:panelGroup>
                    <h:inputText id="email" label="Email" value="#{fornecedorBean.fornecedor.emailPessoa}" size="50"
                                 maxlength="100" required="true" requiredMessage="E_mail Obrigatório!" validatorMessage="E-mail inválido!">
                        <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/>
                    </h:inputText>
                    <h:message for="email"/>
                </h:panelGroup>
                
                
                <h:outputLabel value="Senha:" for="senha"/>
                <h:inputSecret id="senha" label="Senha" value="#{fornecedorBean.fornecedor.senhaPessoa}" size="20" required="true"
                               redisplay="false"/>
                <h:outputLabel value="Confirma Senha:" for="confirmarsenha"/>
                <h:inputSecret id="confirmarsenha" label="Confirmação de Senha" value="#{fornecedorBean.confirmaSenha}" size="20"
                               maxlength="45" required="true" redisplay="false"/> 
                
                <h:outputLabel value="Cidade: " for="cidade"/>
                <h:inputText id="cidade" label="Cidade" value="#{fornecedorBean.fornecedor.cidadePessoa}" size="30" maxlength="100" required="true"
                             requiredMessage="O nome da cidade é obrigatório!!"><f:validateLength minimum="3" maximum="100"/>
                </h:inputText> 
                
                <h:outputLabel value="Estado: " for="estado"/>
                <h:inputText id="estado" label="Estado" value="#{fornecedorBean.fornecedor.estadoPessoa}" size="10" maxlength="2" required="true"
                             requiredMessage="O estado é obrigatório!!"><f:validateLength minimum="2" maximum="2"/>
                </h:inputText>
                
                <h:outputLabel value="Data de Nascimento" for="data"/>
                <h:inputText id="data" label="Data de Nascimento" value="#{fornecedorBean.fornecedor.dataNascimentoPessoa}"
                             size="10" maxlength="10" required="true" requiredMessage="Campo Data de Nascimento Obrigatório!!">
                    <f:convertDateTime dateStyle="medium"/>
                </h:inputText>
                
                <h:outputLabel value="CEP: " for="cep"/>
                <h:inputText id="cep" label="CEP" value="#{fornecedorBean.fornecedor.cepPessoaPessoa}" size="10" maxlength="9" required="true"
                             requiredMessage="O CEP é obrigatório!!"><f:validateLength minimum="3" maximum="10"/>
                </h:inputText>
                
                <h:outputLabel value="Telefone: " for="telefone"/>
                <h:inputText id="telefone" label="Telefone" value="#{fornecedorBean.fornecedor.telefonePessoa}" size="30" maxlength="20" required="true"
                             requiredMessage="O numero do telefone é obrigatório!!"><f:validateLength minimum="3" maximum="20"/>
                </h:inputText>
                
                <h:outputLabel value="CPF-CNPJ: " for="cpfcnpj"/>
                <h:inputText id="cpfcnpj" label="CPF-CNPJ" value="#{fornecedorBean.fornecedor.cpfCnpjPessoa}" size="30" maxlength="14" required="true"
                             requiredMessage="O numero do CPF ou CNPJ é obrigatório!!"><f:validateLength minimum="3" maximum="14"/>
                </h:inputText>                
               
                <h:outputLabel value="Inscrição Estadual: " for="inscricao"/>
                <h:inputText id="inscricao" label="Inscrição Estadual" value="#{fornecedorBean.fornecedor.inscrEstadualFornecedor}" size="30" maxlength="14" required="true"
                             requiredMessage="O numero da Inscrição Estadual é obrigatório!!"><f:validateLength minimum="3" maximum="30"/>
                </h:inputText>

                <h:outputLabel value="Razão Social: " for="razao"/>
                <h:inputText id="razao" label="Razão Social" value="#{fornecedorBean.fornecedor.razaoSocialFornecedor}" size="30" maxlength="45" required="true"
                             requiredMessage="O numero da Razão Social é obrigatório!!"><f:validateLength minimum="3" maximum="30"/>
                </h:inputText>
                
                <h:outputLabel value="Responsavel: " for="responsavel"/>
                <h:inputText id="responsavel" label="Responsavel" value="#{fornecedorBean.fornecedor.responsavelFornecedor}" size="30" maxlength="100" required="true"
                             requiredMessage="O nome do Responsavel é obrigatório!!"><f:validateLength minimum="3" maximum="30"/>
                </h:inputText>
                
            </h:panelGrid>

            <h:commandButton action="#{fornecedorBean.salvar()}" value="Salvar"/>


        </h:form>
        
    </h:body>

at br.com.ecommerceetelj.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:99)
Oq tem aí?

esse eh o codigo do meu filter


public class ConexaoHibernateFilter implements Filter {
    
    
    private SessionFactory sf;
    
    private static final boolean debug = true;
    // The filter configuration object we are associated with.  If
    // this value is null, this filter instance is not currently
    // configured. 
    private FilterConfig filterConfig = null;
    
    public ConexaoHibernateFilter() {
    }    
    
    private void doBeforeProcessing(ServletRequest request, ServletResponse response)
            throws IOException, ServletException {
        if (debug) {
            log("ConexaoHibernateFilter:DoBeforeProcessing");
        }

        // Write code here to process the request and/or response before
        // the rest of the filter chain is invoked.

        // For example, a logging filter might log items on the request object,
        // such as the parameters.
	/*
         * for (Enumeration en = request.getParameterNames();
         * en.hasMoreElements(); ) { String name = (String)en.nextElement();
         * String values[] = request.getParameterValues(name); int n =
         * values.length; StringBuffer buf = new StringBuffer();
         * buf.append(name); buf.append("="); for(int i=0; i < n; i++) {
         * buf.append(values[i]); if (i < n-1) buf.append(","); }
         * log(buf.toString()); }
         */
    }    
    
    private void doAfterProcessing(ServletRequest request, ServletResponse response)
            throws IOException, ServletException {
        if (debug) {
            log("ConexaoHibernateFilter:DoAfterProcessing");
        }

        // Write code here to process the request and/or response after
        // the rest of the filter chain is invoked.

        // For example, a logging filter might log the attributes on the
        // request object after the request has been processed. 
	/*
         * for (Enumeration en = request.getAttributeNames();
         * en.hasMoreElements(); ) { String name = (String)en.nextElement();
         * Object value = request.getAttribute(name); log("attribute: " + name +
         * "=" + value.toString());
         *
         * }
         */

        // For example, a filter might append something to the response.
	/*
         * PrintWriter respOut = new PrintWriter(response.getWriter());
         * respOut.println("<P><B>This has been appended by an intrusive
         * filter.</B>");
         */
    }

    /**
     *
     * @param request The servlet request we are processing
     * @param response The servlet response we are creating
     * @param chain The filter chain we are processing
     *
     * @exception IOException if an input/output error occurs
     * @exception ServletException if a servlet error occurs
     */
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
        
        try {
            this.sf.getCurrentSession().beginTransaction();
            chain.doFilter(request, response);//busca a sessao com o banco
            this.sf.getCurrentSession().getTransaction().commit();//confirma transaçao
            this.sf.getCurrentSession().close();
        } catch (Throwable ex) {
            try {
                if (this.sf.getCurrentSession().getTransaction().isActive()) {
                    this.sf.getCurrentSession().getTransaction().rollback();
                }
            } catch (Throwable t) {
                t.printStackTrace();
            }
            throw new ServletException(ex);
        }
        
    }

    /**
     * Return the filter configuration object for this filter.
     */
    public FilterConfig getFilterConfig() {
        return (this.filterConfig);
    }

    /**
     * Set the filter configuration object for this filter.
     *
     * @param filterConfig The filter configuration object
     */
    public void setFilterConfig(FilterConfig filterConfig) {
        this.filterConfig = filterConfig;
    }

    /**
     * Destroy method for this filter
     */
    public void destroy() {        
    }

    /**
     * Init method for this filter
     */
    
    //É EXECUTADO SEMPRE QUE COLOCA O PROJETO NO AR, INICIO, AGORA VAMUS DEFINIR ALGUNS FILTROS(PARAMETROS DE INICIALIZAÇAO)
    public void init(FilterConfig filterConfig) {        
        
        this.sf = HibernateUtil.getSessionFactory();
        
    }

    /**
     * Return a String representation of this object.
     */
    @Override
    public String toString() {
        if (filterConfig == null) {
            return ("ConexaoHibernateFilter()");
        }
        StringBuffer sb = new StringBuffer("ConexaoHibernateFilter(");
        sb.append(filterConfig);
        sb.append(")");
        return (sb.toString());
    }
    
    private void sendProcessingError(Throwable t, ServletResponse response) {
        String stackTrace = getStackTrace(t);        
        
        if (stackTrace != null && !stackTrace.equals("")) {
            try {
                response.setContentType("text/html");
                PrintStream ps = new PrintStream(response.getOutputStream());
                PrintWriter pw = new PrintWriter(ps);                
                pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n"); //NOI18N

                // PENDING! Localize this for next official release
                pw.print("<h1>The resource did not process correctly</h1>\n<pre>\n");                
                pw.print(stackTrace);                
                pw.print("</pre></body>\n</html>"); //NOI18N
                pw.close();
                ps.close();
                response.getOutputStream().close();
            } catch (Exception ex) {
            }
        } else {
            try {
                PrintStream ps = new PrintStream(response.getOutputStream());
                t.printStackTrace(ps);
                ps.close();
                response.getOutputStream().close();
            } catch (Exception ex) {
            }
        }
    }
    
    public static String getStackTrace(Throwable t) {
        String stackTrace = null;
        try {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            t.printStackTrace(pw);
            pw.close();
            sw.close();
            stackTrace = sw.getBuffer().toString();
        } catch (Exception ex) {
        }
        return stackTrace;
    }
    
    public void log(String msg) {
        filterConfig.getServletContext().log(msg);        
    }
}

Eu sei que não tem nada a ver com o problema do tópico,mas quando vejo algo desse tipo não me contenho :smiley:

public class Pessoa implements Serializable {  
    private Integer idPessoa;  
    private String nomePessoa;  
    private String enderecoPessoa;  

Se id,nome e endereco são atributos de Pessoa,pra que colocar o sufixo no fim?Qual o ganho que isso traz?

:slight_smile: entao nao sei rsrs…eh o meu primeiro projeto em jsf e hibernate , to fazendo o meu tcc, e nunca tinha visto herança em jsf nem hibernate em um proejto real so para estudo …entao to apanhando que nem um condenado… :slight_smile:

Não adianta postar o código todo do filter pq eu não sei oq tem naquela exata linha, pois você não colocou os imports.

Novamente, o que tem na linha abaixo?
at br.com.ecommerceetelj.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:99)

Não coloque 10000000 linhas de código, apenas o que tem na linha.

eai tudo bem…obrigado pela ajuda e paciencia rsrs

entao esses sao os imports:


import br.com.ecommerceetelj.util.HibernateUtil;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.*;
import org.hibernate.SessionFactory;

//LINHA 99
this.sf.getCurrentSession().getTransaction().commit();//confirma transaçao

VLW!!!

Por favor, ao postar tópicos:

  1. Evite postar muito código. Deixa o tópico travado e dificulta o trabalho de quem vai ajudar. Se realmente precisar postar muito código, use a opção de attachments (logo abaixo da caixa onde você escreve o texto do fórum) para anexar arquivos;
  2. Evite destacar em seu título o óbvio. Se você não tivesse um ERRO ou não precisasse de AJUDA, sequer abriria o tópico.

Por fim, quanto ao seu erro. Ponha um break point nessa linha:
this.sf.getCurrentSession().getTransaction().commit();

E verifique se:
a) sf não é nulo;
b) O método getCurrentSession() não retorna nulo;
c) O método getTransaction() não retorna nulo;

Uma possibilidade é dividir essa linha em várias (uma para cada chamada), para que o NullPointerException aponte um local mais específico.

eai pessoa tudo bem???
Depois de muito sacrificio consegui descobri o que causava o erro.

era nos construtores das classes filhas… o campo 4 do construtor com valor 1

public Fornecedor() {
        this("", "", "", 1, "", "", "", "", "", "", null, "", "", "", false);
    }

Quando ia gravar no banco , chamava o metodo salvar, que salva se for o id for nulo e atualiza se ele ja existir , entao quando pedia para gravar, ja tinha um valor do construtor(NO idPessoa) e ele tentava atualizar e dava um batch update error…

public void salvar(Fornecedor fornecedor) {
        Integer id_fornecedor = fornecedor.getIdPessoa();
        if (id_fornecedor == null || id_fornecedor == 0) {
            this.fornecedorDAO.salvar(fornecedor);            
        } else {
            this.fornecedorDAO.atualizar(fornecedor);
        }        
    }

arrumei trocando o construtor por(troquei o campo 4 de 1 para 0 ai funcionou certo)

public Fornecedor() {
        this("", "", "", 0, "", "", "", "", "", "", null, "", "", "", false);
    }

VLW AI PELA AJUDA

ABRAÇOSS

Legal, valeu por compartilhar a solução.

De nada…eu que agradeço a ajuda de voces e a paciencia…abraçosss :slight_smile: