[RESOLVIDO] Não foi possível criar instância da Classe <> Null pointer Exception

6 respostas
pcdsjr

O código aparentemente está sem nenhum erro de sintaxe o netbeans confirma isto, porém cai no pior dos erros uma OO mal feita
um pequeno detalhe um objeto que deveria ter dado new…etc

Já revirei todas as classes e nada de fazer funcionar, poderiam me ajudar no que eu estou deixando passar batido
Logo abaixo do erro está o código das classes:

ps: o erro só aparece quando chamo a view paciente.xhtml

com.sun.faces.mgbean.ManagedBeanCreationException: Não é possível criar instância para·a classe: Controle.PacienteBean.
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:193)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
	at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:99)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:158)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
	at org.primefaces.util.ComponentUtils.getStringValueToRender(ComponentUtils.java:67)
	at org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:85)
	at org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:50)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:60)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:48)
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:184)
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:107)
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException // Não consigo descobrir onde está este erro!
	at Util.HibernateUtility.getSession(HibernateUtility.java:20)
	at Dao.PacienteDaoImp.consultar(PacienteDaoImp.java:19)
	at Controle.PacienteBean.<init>(PacienteBean.java:25)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	at java.lang.Class.newInstance0(Class.java:372)
	at java.lang.Class.newInstance(Class.java:325)
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
	... 65 more

Pacote Modelo Classe Paciente:

package Modelo;

import Modelo.Location.Endereco;
import Modelo.Ficha.Ficha;
import Modelo.Ficha.FichaPeriodontoal;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

/**
 *
 * @author Paulo
 */
@Entity
public class Paciente implements Serializable {
    
    @Id
    @GeneratedValue
    @Column(name="id_paciente")
    private long id;
    private String nome;
    private String telefone;
    private String celular;
    @OneToOne(mappedBy="paciente")
    @Cascade(CascadeType.ALL)
    private Endereco endereco;
    private String email;
    private Timestamp nascimento;
    private String cpf;
    private String sexo;
    @OneToOne(mappedBy="paciente")
    @Cascade(CascadeType.ALL)
    private Ficha fichaGeral;
    @OneToOne(mappedBy="paciente")
    @Cascade(CascadeType.ALL)
    private FichaPeriodontoal fichaPeriodontal;
    @OneToMany(mappedBy="paciente", fetch= FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private List<Tratamento> tratamentos;

    public long getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Timestamp getNascimento() {
        return nascimento;
    }

    public void setNascimento(Timestamp nascimento) {
        this.nascimento = nascimento;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public Ficha getFichaGeral() {
        return fichaGeral;
    }

    public void setFichaGeral(Ficha fichaGeral) {
        this.fichaGeral = fichaGeral;
    }

    public FichaPeriodontoal getFichaPeriodontal() {
        return fichaPeriodontal;
    }

    public void setFichaPeriodontal(FichaPeriodontoal fichaPeriodontal) {
        this.fichaPeriodontal = fichaPeriodontal;
    }

    public List<Tratamento> getTratamentos() {
        return tratamentos;
    }

    public void setTratamentos(List<Tratamento> tratamentos) {
        this.tratamentos = tratamentos;
    }
}

Pacote Dao Interface PacienteDao

package Dao;

import Modelo.Paciente;
import Util.DaoGenerico;
import java.util.List;

/**
 *
 * @author Paulo
 */
public interface PacienteDao extends DaoGenerico<Paciente, Long> {
    
    public List consultar();
}

Pacote Dao Classe PacienteDaoImp

package Dao;

import Modelo.Paciente;
import Util.DaoGenericoImp;
import Util.HibernateUtility;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;

/**
 *
 * @author Paulo
 */
public class PacienteDaoImp extends DaoGenericoImp<Paciente, Long> implements PacienteDao {

    @Override
    public List consultar() {
        List lista = new ArrayList();
        Criteria crit = HibernateUtility.getSession().createCriteria(Paciente.class);
        lista = (List) crit.list();
        return lista;
    }
}

Pacote Controle Classe PacienteBean

package Controle;

import Dao.PacienteDao;
import Dao.PacienteDaoImp;
import Modelo.Paciente;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Paulo
 */
@ManagedBean
@ViewScoped
public class PacienteBean implements Serializable {
    
    private Paciente paciente = new Paciente();
    List <Paciente> pacientes = new ArrayList();
    private PacienteDao dao = new PacienteDaoImp();

    public PacienteBean() {
        pacientes = dao.consultar(); // busca no banco todos os registros e popula a lista de pacientes
    }
    
    public void salvar(){
        dao.merge(paciente); // salvando no banco de dados
        paciente = new Paciente(); // criando um novo objeto para caso for inserir novamente
        pacientes = dao.consultar(); //busca os dados no banco após salvar para apresentar na tabela
    }
    
    public void editar(){
        paciente = dao.getById(paciente.getId()); // busca no banco qual registro que vai ser alterado.
    }
    
    public void deletar(){
        dao.delete(paciente); // deleta do banco o paciente que está no objeto paciente, que foi setado na view.
        pacientes = dao.consultar(); // busca os dados no banco após excluir para apresentar na tabela
    }

    public Paciente getPaciente() {
        return paciente;
    }

    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    public List getPacientes() {
        return pacientes;
    }

    public void setPacientes(List pacientes) {
        this.pacientes = pacientes;
    }
}

View paciente.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./../template/template.xhtml"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="conteudo">
        <h:form id="form">
            <p:panel header="Cadastro de Pacientes" id="panel">
                <h:panelGrid columns="2">
                    <h:outputLabel value="Nome:" for="nome"/>
                    <p:inputText id="nome" value="#{pacienteBean.paciente.nome}" maxlength="40" size="40"/>
                    <h:outputLabel value="E-mail:" for="email"/>
                    <p:inputText id="email" value="#{pacienteBean.paciente.email}" maxlength="40" size="40"/>
                    <h:outputLabel value="Rua: " for="rua"/>
                    <p:inputText id="rua" value="#{pacienteBean.paciente.endereco.rua}" maxlength="40" size="40"/>
                    <h:outputLabel value="Bairro:" for="bairro"/>
                    <p:inputText id="bairro" value="#{pacienteBean.paciente.endereco.bairro}" maxlength="40" size="40"/>
                    <h:outputLabel value="CEP:" for="cep"/>
                    <p:inputMask id="cep" value="#{pacienteBean.paciente.endereco.cep}" mask="99999-999" size="40"/>
                    
                    
                    <!-- Não reparem neste pedaço ainda falta implementar-->
                    <h:outputLabel value="Cidade" for="cidade"/>
                    <p:selectOneListbox id="cidade" value=""/>
                    <h:outputLabel value="Estado" for="estado"/>
                    <p:selectOneListbox id="estado" value=""/>
                    <!-- Não reparem neste pedaço ainda falta implementar-->
                    
                    
                    <h:outputLabel value="Celular:" for="celular"/>
                    <p:inputMask id="celular" value="#{pacienteBean.paciente.celular}" mask="(99) 9999 - 9999" size="40"/>
                    <h:outputLabel value="CPF:" for="cpf"/>
                    <p:inputMask id="cpf" value="#{pacienteBean.paciente.cpf}" mask="[CPF removido]" size="40"/>
                    <h:outputLabel value="Data de Nascimento:" for="nascimento"/>
                    <p:calendar id="nascimento" value="#{pacienteBean.paciente.nascimento}" pattern="dd/mm/yyyy" size="40" effect="slideDown"/>
                    <h:outputLabel value="Sexo:" for="sexo"/>
                    <h:selectOneRadio id="sexo" value="#{pacienteBean.paciente.sexo}">
                        <f:selectItem itemLabel="M"/>
                        <f:selectItem itemLabel="F"/>
                    </h:selectOneRadio>
                    <p:commandButton id="btnSalvar" value="Salvar" actionListener="#{pacienteBean.salvar()}" update="form"/>
                </h:panelGrid>
                <p:dataTable id="tabela" value="#{pacienteBean.pacientes}"  var="pac" emptyMessage="Nehum registro incluído" paginator="true" rows="10">
                    <f:facet name="header">
                        Lista de Pacientes
                    </f:facet>
                    <p:column headerText="Nome" style="text-align: center">
                        <h:outputText value="#{pac.nome}"/>
                    </p:column>
                    <p:column headerText="E-mail" style="text-align: center"/>
                    <p:column headerText="Endereco" style="text-align: center"/>
                    <p:column headerText="Celular" style="text-align: center"/>
                    <p:column headerText="CPF" style="text-align: center"/>
                    <p:column headerText="Nascimento" style="text-align: center"/>
                    <p:column headerText="Sexo" style="text-align: center"/>
                </p:dataTable>
            </p:panel>
        </h:form>
    </ui:define>
</ui:composition>

Pacote Util Interface DaoGenerico

package Util;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Paulo
 */
public interface DaoGenerico<T, ID extends Serializable> {

    public Class<T> getObjectClass();

    public T merge(T objeto);

    public void delete(T objeto);

    public void deleteItem(T objeto);

    public List<T> getAll();

    public List<T> getCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta);

    public T getById(Serializable id);

    public List<T> consultaHQL(String consulta);

    public void cancel();
}

Pacote Util Classe DaoGenericoImp

package Util;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Paulo
 */
public class DaoGenericoImp<T, ID extends Serializable> implements DaoGenerico<T, ID> {

    private final Class<T> oClass;

    public DaoGenericoImp() {
        this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

    @Override
    public Class<T> getObjectClass() {
        return this.oClass;
    }

    @Override
    public T merge(T objeto) {
        try {
            Object obj = null;
            HibernateUtility.beginTransaction();
            obj = HibernateUtility.getSession().merge(objeto);
            HibernateUtility.commitTransaction();
            HibernateUtility.closeSession();
            return (T) obj;
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public void delete(T objeto) {
        try {
            HibernateUtility.beginTransaction();
            HibernateUtility.getSession().delete(objeto);
            HibernateUtility.commitTransaction();
            HibernateUtility.closeSession();
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public void deleteItem(T objeto) {
        try {
            HibernateUtility.beginTransaction();
            HibernateUtility.getSession().delete(objeto);
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public List<T> getAll() {
        try {
            List list = HibernateUtility.getSession().createCriteria(oClass).list();
            //HibernateUtility.closeSession();
            return (List<T>) list;
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public T getById(Serializable id) {
        try {
            return (T) HibernateUtility.getSession().get(oClass, id);
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public List<T> getCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta) {
        List<T> lista = new ArrayList<T>();
        Set entradas = filtrosConsulta.entrySet();

        try {
            Criteria crit = HibernateUtility.getSession().createCriteria(oClass);
            if (subClazz == null) {
                for (Iterator it = entradas.iterator(); it.hasNext();) {
                    Entry object = (Entry) it.next();
                    if (object.getValue() instanceof Enum) {
                        crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 0) {
                        crit.add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    } else if (tipoConsulta == 1) {
                        crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.add(Restrictions.gt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 3) {
                        crit.add(Restrictions.ge(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 4) {
                        crit.add(Restrictions.lt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 5) {
                        crit.add(Restrictions.le(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.add(Restrictions.ne(object.getKey().toString(), object.getValue()));
                    }
                }
            } else {
                for (Iterator it = entradas.iterator(); it.hasNext();) {
                    Entry object = (Entry) it.next();
                    //crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    if (object.getValue() instanceof Enum) {
                    } else if (tipoConsulta == 0) {
                        crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
                    } else if (tipoConsulta == 1) {
                        crit.createCriteria(subClazz).add(Restrictions.eq(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.createCriteria(subClazz).add(Restrictions.gt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 3) {
                        crit.createCriteria(subClazz).add(Restrictions.ge(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 4) {
                        crit.createCriteria(subClazz).add(Restrictions.lt(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 5) {
                        crit.createCriteria(subClazz).add(Restrictions.le(object.getKey().toString(), object.getValue()));
                    } else if (tipoConsulta == 2) {
                        crit.createCriteria(subClazz).add(Restrictions.ne(object.getKey().toString(), object.getValue()));
                    }
                }
            }
            crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
            crit.setMaxResults(20);
            lista = (List<T>) crit.list();
            //HibernateUtility.closeSession();
            return lista;
        } catch (HibernateException hibernateException) {
            cancel();
            throw hibernateException;
        }
    }

    @Override
    public List<T> consultaHQL(String consulta) {
        return (List<T>) HibernateUtility.getSession().createQuery(consulta).list();
    }

    @Override
    public void cancel() {
        HibernateUtility.rollbackTransaction();
        HibernateUtility.closeSession();
    }
}

Bom é isso, me ajudem a achar o que estou deixando passar batido.
Algo me diz que é uma coisa pequena um detalhe.

6 Respostas

A

Opa, bom dia …

Não consegui achar o HibernateUtility … você poderia postar o codigo …

Precisamos verificar esse método …

[]'s

pcdsjr

Pacote Util Classe HibernateUtility

package Util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

/**
 *
 * @author Paulo
 */
public class HibernateUtility {

    private static final SessionFactory factory=null;
    private static final ThreadLocal sessionThread = new ThreadLocal();
    private static final ThreadLocal transactionThread = new ThreadLocal();

    public static Session getSession() {
        Session session = (Session) sessionThread.get();
        if ((session == null) || (!(session.isOpen()))) {
            session = factory.openSession();
            sessionThread.set(session);
        }
        return ((Session) sessionThread.get());
    }

    public static void closeSession() {
        Session session = (Session) sessionThread.get();
        if ((session != null) && (session.isOpen())) {
            sessionThread.set(null);
            session.close();
        }
    }

    public static void beginTransaction() {
        Transaction transaction = getSession().beginTransaction();
        transactionThread.set(transaction);
    }

    public static void commitTransaction() {
        Transaction transaction = (Transaction) transactionThread.get();
        if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
            transaction.commit();
            transactionThread.set(null);
        }
    }

    public static void rollbackTransaction() {
        Transaction transaction = (Transaction) transactionThread.get();
        if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
            transaction.rollback();
            transactionThread.set(null);
        }
    }
}

Pronto ai está!

A

Então … no método getSession na linha 20, você está utilizando o objeto factory para abrir a sessão, porém ele não foi instanciado …

por isso, está gerando o nullpointer …

[]'s

pcdsjr

Na linha 13 eu declaro uma constante

private static final SessionFactory factory;

Ao tentar dar um new ali mesmo

private static final SessionFactory factory = new SessionFactory();

O netbeans pede que eu implemente todos os métodos abstratos.

Então é isso meu metodo pra pegar uma sessão está paulado e não sei onde dar o new!

A

Para instancia-lo você poderia criar um bloco static …

Ex.

static
	{
		try
		{
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		}
		catch (Exception e)
		{
			throw new ExceptionInInitializerError(e);
		}
	}

Vê se ajuda

[]'s

pcdsjr

Obrigado Alex, sua dica caiu como uma luva…

Moderadores podem fechar o tópico o assunto está mais que resolvido!

Criado 27 de outubro de 2011
Ultima resposta 27 de out. de 2011
Respostas 6
Participantes 2