Erro java.lang.NullPointerException (RESOLVIDO)

13 respostas
G

Estou tentando executar a seguinte consulta SQL para gerar um relatório, só que ela gera NullPointerException . .
Porém no banco(Oracle) ela roda perfeitamente..
estou usando dois subSelects e uma função.. será que estou usando da maneira errada ??

Abaixo meu DAO com a minha consulta :

public class ControleDeFaltas {

    public List executaConsulta(Date dataIni, Date dataFim) {
        Session sessao = HibernateUtil.getSession();
        List<ControleFaltas> tbControle = new ArrayList<ControleFaltas>();
        String SQL;

         SQL = "SELECT func.sigla, func.nome, func.n_apropriacao, hora_possivel_ws(func.sigla, :dataIni, :dataFim) as hora_possivel, SUM(apr.hora) as horas_apropriadas, " +
         "((SELECT count(*) as falta FROM tb_falta f WHERE f.dt_dia BETWEEN :dataIni and :dataFim AND f.sigla = lower (func.sigla)) * func.periodo) as falta, " +
         "(SELECT SUM(apr.hora) FROM Apropriacao apr WHERE to_date(apr.dia||'/'||apr.mes||'/'||apr.ano, 'DD/MM/YYYY') " +
         "BETWEEN :dataIni AND :dataFim AND contrato = '10005' AND func.sigla = upper (apr.pessoa)) as ferias " +
         "FROM Funcionario func, Apropriacao apr " +
         "WHERE to_date(apr.dia||'/'||apr.mes||'/'||apr.ano, 'DD/MM/YYYY') " +
         "BETWEEN :dataIni AND :dataFim " +
         "AND apr.pessoa = lower(func.sigla) " +
         "AND func.status = 'Ativo' " +
         "GROUP BY func.nome, func.sigla, func.n_apropriacao, func.periodo " +
         "ORDER BY func.nome, func.sigla ";

        try {
            sessao.beginTransaction();
            Query select = sessao.createQuery(SQL);[b] (43)[/b]
            select.setParameter("dataIni", dataIni);
            select.setParameter("dataFim", dataFim);

            for (Iterator it = select.iterate(); it.hasNext();) {
                Object[] obj = (Object[]) it.next();
                ControleFaltas campo = new ControleFaltas();

                campo.setSigla(obj[0].toString());
                campo.setNome(obj[1].toString());
                campo.setN_Apropriacao(Integer.parseInt(obj[2].toString()));
                campo.setHoras_Possiveis(Double.parseDouble(obj[3].toString()));
                campo.setHoras_Apropriadas(Double.parseDouble(obj[4].toString()));
                campo.setFaltas(Double.parseDouble(obj[5].toString()));
                campo.setFerias(Double.parseDouble(obj[4].toString()));

                tbControle.add(campo);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }
        return tbControle;
    }
}
meu erro
Hibernate: /* FROM Pessoa as p WHERE p.sigla = :sigla AND p.status = :status */ select pessoa0_.sigla as sigla2_, pessoa0_.n_apropriacao as n2_2_, pessoa0_.periodo as periodo2_, pessoa0_.permissao as permissao2_, pessoa0_.status as status2_, pessoa0_.tipo as tipo2_ from pessoa pessoa0_ where pessoa0_.sigla=? and pessoa0_.status=?
Hibernate: /* FROM CadPermissaoRelat cp JOIN FETCH cp.permissaoRelat relat JOIN FETCH cp.permissaoRelatCt ct WHERE cp.sigla = :sigla */ select cadpermiss0_.codigo as codigo15_0_, permissaor1_.codigo as codigo13_1_, permissaor2_.codigo as codigo14_2_, cadpermiss0_.coordenador as coordena2_15_0_, cadpermiss0_.cod_permissao as cod4_15_0_, cadpermiss0_.cod_permissao_ct as cod5_15_0_, cadpermiss0_.sigla as sigla15_0_, permissaor1_.apr_contrato as apr2_13_1_, permissaor1_.apr_contrato_fin as apr3_13_1_, permissaor1_.apr_contrato_func_fin as apr4_13_1_, permissaor1_.apr_contrato_gerencial as apr5_13_1_, permissaor1_.apr_contrato_global as apr6_13_1_, permissaor1_.apr_contratos_validos as apr7_13_1_, permissaor1_.apr_desenho as apr8_13_1_, permissaor1_.apr_dis_atividade_contrato as apr9_13_1_, permissaor1_.apr_disciplina as apr10_13_1_, permissaor1_.apr_disciplina_atividade as apr11_13_1_, permissaor1_.apr_horas_disc as apr12_13_1_, permissaor1_.apr_intervalo_hora_almoco as apr13_13_1_, permissaor1_.APR_POR_DIA as APR14_13_1_, permissaor1_.calculo_ferias as calculo15_13_1_, permissaor1_.chamado as chamado13_1_, permissaor1_.COMP_APR as COMP17_13_1_, permissaor1_.COMP_CARGA_HORARIA as COMP18_13_1_, permissaor1_.COMP_HORAS_APR_PER as COMP19_13_1_, permissaor1_.COMP_TIMESHEET_IFS as COMP20_13_1_, permissaor1_.fds_feriado as fds21_13_1_, permissaor1_.grupo as grupo13_1_, permissaor1_.hora_extra as hora23_13_1_, permissaor1_.hora_possivel_saldo_fin as hora24_13_1_, permissaor1_.HORAS_APR_DISCIPLINA_ATIVIDADE as HORAS25_13_1_, permissaor1_.HORAS_FUNCIONARIO_CONTRATOS as HORAS26_13_1_, permissaor1_.permissao as permissao13_1_, permissaor1_.permissao_joblider as permissao28_13_1_, permissaor1_.PORC_HORA_APR as PORC29_13_1_, permissaor1_.PREENCHIMENTO_TIME_SHEET as PREENCH30_13_1_, permissaor1_.REL_HR_CONTRATO as REL31_13_1_, permissaor1_.REL_HORAIFS as REL32_13_1_, permissaor1_.saldo as saldo13_1_, permissaor1_.SALDO_HORAS_GPS as SALDO34_13_1_, permissaor1_.sem_preencher as sem35_13_1_, permissaor1_.superv_coord as superv36_13_1_, permissaor2_.ct_area as ct2_14_2_, permissaor2_.ct_coordenador as ct3_14_2_, permissaor2_.ct_disciplina as ct4_14_2_, permissaor2_.ct_filial as ct5_14_2_, permissaor2_.ct_job_lider as ct6_14_2_, permissaor2_.ct_todos as ct7_14_2_, permissaor2_.grupo as grupo14_2_ from cad_permissao_relat cadpermiss0_, tb_permissao_relat permissaor1_, tb_permissao_relat_ct permissaor2_ where cadpermiss0_.cod_permissao=permissaor1_.codigo and cadpermiss0_.cod_permissao_ct=permissaor2_.codigo and cadpermiss0_.sigla=?
Hibernate: select SEQ_AUDIT_ACOMP.nextval from dual
Hibernate: /* insert br.com.projectus.acompanhamento.dados.TbAuditAcomp */ insert into TB_AUDIT_ACOMP (DATA_GERACAO, NOME_ARQUIVO, NOME_RELAT, PARAMETROS_RELAT, usuario, codigo) values (?, ?, ?, ?, ?, ?)
java.lang.NullPointerException
        at org.hibernate.hql.ast.HqlSqlWalker.setAlias(HqlSqlWalker.java:844)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.aliasedSelectExpr(HqlSqlBaseWalker.java:2069)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1832)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
        at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
        [b]at br.com.projectus.acompanhamento.persistencia.ControleDeFaltas.executaConsulta(ControleDeFaltas.java:43)[/b]
        at br.com.projectus.acompanhamento.relatorios.RelatorioControleDeFaltas.gerarRelatorio(RelatorioControleDeFaltas.java:58)
        at acompanhamento.ControleDeFaltas.btnGerarRelatorio_action(ControleDeFaltas.java:185)
        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 org.apache.el.parser.AstValue.invoke(AstValue.java:191)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:285)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
        at java.lang.Thread.run(Thread.java:619)
28/12/2011 10:39:32 org.hibernate.hql.ast.ErrorCounter reportError
SEVERE: <AST>:0:0: unexpected AST node: query
28/12/2011 10:39:32 org.hibernate.hql.ast.ErrorCounter reportError
SEVERE:  right-hand operand of a binary operator was null
28/12/2011 10:39:32 org.hibernate.hql.ast.ErrorCounter reportError
SEVERE: <AST>:0:0: unexpected end of subtree

13 Respostas

H

Oq tem nessa linha? ControleDeFaltas.java:43

R

Tenta dar Debug e ver em qual linha da o erro.
Creio que deva ser dentro do For…
Pelo erro, você deve estar tentando converter ou calcular algum valor que esteja vazio…
Debugando e vendo certinhos os campos passados e onde da o erro vc vai conseguir identificar

G

a linha 43 é essa aqui :

então ai que está o X da questão ele não entra nem no FOR .

dessa linha 43 vai direto pro catch.

H

Sua sessao está null. Por isso o erro.

Como você está configurando? Está com alguma configuração errada ou com algum problema de conexão com o DB.

R

Então o erro deve estar na sua Query mesmo.
Executa ela separadamente dentro do sql, com os parametros iguais ao que vc pega da tela…
Ai vc verifica se no sql ela retorna o valor certinho ou se tb da erro.
Dando erro, identificamos que o problema está em algum ponto da query, nos calculos que tem nela, enfim, se não deu, deve ser a sessão que não está configurada.

A

Bom dia,

Então, acho que se a sessão estivesse nula, o nullpointer ocorreria na linha de cima, não ??

sessao.beginTransaction();

Eu acho que você deveria criar um Query native, assim:

sessao.createSQLQuery(SQL);

Tenta isso também …

[]'s

H

Então ele tem alguma coisa errada no código, pois o nullpointer é apontado na linha:
at br.com.projectus.acompanhamento.persistencia.ControleDeFaltas.executaConsulta(ControleDeFaltas.java:43)

Veja se o código não esta desatualizado no servidor, pois é aí que rola o NullPointer.

E

alex.brito:
Bom dia,

Então, acho que se a sessão estivesse nula, o nullpointer ocorreria na linha de cima, não ??

sessao.beginTransaction();

Eu acho que você deveria criar um Query native, assim:

sessao.createSQLQuery(SQL);

Tenta isso também …

[]'s

acho que é createNativeQuery.

GNunesOliveira: Ele está tentando interpretar a consulta como um HQL, por isso está dando null pointer exception. Você tem que buscar como rodar uma consulta nativa (o alex disse isso antes)

M

uma dica boa.

Use views de banco de dados. facilita muito na manutencao e no desenvolvimento.

F

Eu acredito que o erro esteja aqui:

"hora_possivel_ws(func.sigla, :dataIni, :dataFim) as hora_possivel"De onde vem esta função hora_possivel_ws(…)? Acho que o HQL não a reconhece, por isso o erro.

F

O evefuji matou a charada, eu estava achando que era HQL mas pela estrutura é SQL

A

evefuji:
alex.brito:
Bom dia,

Então, acho que se a sessão estivesse nula, o nullpointer ocorreria na linha de cima, não ??

sessao.beginTransaction();

Eu acho que você deveria criar um Query native, assim:

sessao.createSQLQuery(SQL);

Tenta isso também …

[]'s

acho que é createNativeQuery.

GNunesOliveira: Ele está tentando interpretar a consulta como um HQL, por isso está dando null pointer exception. Você tem que buscar como rodar uma consulta nativa (o alex disse isso antes)

Boa.

se usar o hibernate, tem o createSQLQuery(…), mas se for seguir a especificação JPA, utilize o que o evefuji disse, createNativeQuery(…)

[]'s

G

Pessoas,

Muito Obrigado pela ajuda !
Realmente era isso mesmo Alex.

Obrigado.

Feliz 2012!!

Criado 28 de dezembro de 2011
Ultima resposta 2 de jan. de 2012
Respostas 13
Participantes 7