[Resolvido] NullPointer hibernate + JSP

ola galera

tenho os seguintes codigos e os mesmo estão gerando um nullPointer e não consegui descobrir ainda

HibernateUtil

public class HibernateUtil {

    private static SessionFactory factory;

    static {
        try {
            factory = new Configuration().configure().buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
            factory = null;
        }
    }

    public static Session getSession() {
        return factory.openSession();
    }
}

PessoaService

    public List<Pessoa> listarTodas() {
        Session session = HibernateUtil.getSession();
        try {
            return session.createCriteria(Pessoa.class).addOrder(Order.asc("nome")).list();
        } finally {
            System.out.println("A sessao foi aberta " + session.isOpen());
            session.close();
        }
    }

CadastroContaBean

    public List<SelectItem> getPessoas() {
        if (this.pessoas == null) {
            this.pessoas = new ArrayList<SelectItem>();
            List<Pessoa> pessoasList = new PessoaService().listarTodas();
            this.pessoas.add(new SelectItem(null, "Selecione"));
            for (Pessoa pessoa : pessoasList) {
                this.pessoas.add(new SelectItem(pessoa, pessoa.getNome()));
            }
        }
        return this.pessoas;
    }

ERRO


java.lang.NullPointerException
	at financeiro.util.HibernateUtil.getSession(HibernateUtil.java:23)
	at financeiro.util.PessoaService.listarTodas(PessoaService.java:25)
	at financeiro.visao.CadastroContaBean.getPessoas(CadastroContaBean.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)

obrigado a quem puder ajudar

Eu aposto que isto está a acontecer:

} catch (Exception e) { e.printStackTrace(); factory = null; }

Acontece um erra na criação da factor, que cai no catch e fica a null, e no getSession dá NPE.

eu já tinha tirado aquele null

mesmo assim o erro persiste

Mesmo tirando o null, se acontecer a exception e cair ali, a factory fica a null…

De certeza que deves ter no teu log uma exception antes desse NPE

oi, tente assim:

public class HibernateUtil {

    private static final SessionFactory factory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // essa configuração é para mapeamentos xml
           // para Annotations use new AnnotationConfiguration().configure().buildSessionFactory();
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Exception e) {           
           
            e.printStackTrace(); 
        }
    }

    public static Session getSession() {
         return factory.openSession();  
    }

}

Lembrando que a configuracao que vc fez eh para hibernate usando mapeamento das classes por xml, se estiver usando annotations use new AnnotationsConfiguration conforme o comentario no codigo.

obrigado a todos.

marciavilaca, vou usar sua classe, porem com annotation…

o problema era no banco de estava com problemas…

e quando dava getSession dava pau como comentou o amigo acima

:wink: