Erro: DataException: could not execute query using iterate(RESOLVIDO)

1 resposta
G

Quando executo minha aplicação tenho o seguinte erro :

Hibernate: /* SELECT apr.contrato, SUM(apr.hora) FROM Apropriacao apr WHERE to_date(apr.dia||'/'||apr.mes||'/'||apr.ano, 'DD/MM/YYYY') BETWEEN :dataIni AND :dataFim AND apr.n_apropriacao < 90000 AND apr.os != :cadOs GROUP BY apr.contrato ORDER BY apr.contrato  */ select apropriaca0_.contrato as col_0_0_, SUM(apropriaca0_.hora) as col_1_0_ from apropriacao_unico apropriaca0_ where (to_date(apropriaca0_.dia||'/'||apropriaca0_.mes||'/'||apropriaca0_.ano, 'DD/MM/YYYY') between ? and ?) and apropriaca0_.n_apropriacao<90000 and apropriaca0_.os<>? group by apropriaca0_.contrato order by apropriaca0_.contrato
org.hibernate.exception.DataException: could not execute query using iterate
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:427)
        at org.hibernate.hql.ast.QueryTranslatorImpl.iterate(QueryTranslatorImpl.java:380)
        at org.hibernate.engine.query.HQLQueryPlan.performIterate(HQLQueryPlan.java:224)
        at org.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1192)
        at org.hibernate.impl.QueryImpl.iterate(QueryImpl.java:46)
        at br.com.projectus.acompanhamento.persistencia.RelCompHorasPeriodo.consultaPeriodo(RelCompHorasPeriodo.java:56)
        at br.com.projectus.acompanhamento.persistencia.RelCompHorasPeriodo.gerarRelatorio(RelCompHorasPeriodo.java:89)
        at br.com.projectus.acompanhamento.relatorios.RelatorioCompHorasPeriodo.geraRelatCompHorasPer(RelatorioCompHorasPeriodo.java:66)
        at acompanhamento.CompHorasAprPeriodo.btnGerarRelatorio_action(CompHorasAprPeriodo.java:331)
        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)
Caused by: java.sql.SQLException: ORA-01861: o literal não corresponde à string de formato

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1061)
        at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
        at org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:404)
        ... 52 more

no meio gera um outro erro de String de formato do Oracle.
esse segundo erro da em função do primeiro ? ?
ou são coisas diferentes…

Eu não sei o que fazer para reverter esse erro;
Alguém pode me ajudar ?

Abaixo segue minha classe DAO

public List<ComparacaoHorasPeriodo> consultaPeriodo(List<ComparacaoHorasPeriodo> relat, int numPeriodo,
            Date dataIni, Date dataFim, boolean incluirTerceiros,boolean incluirOsAusencia, String cadOs) {

        CadOsAusenciaDao dao = new CadOsAusenciaDao();
        Session sessao = HibernateUtil.getSession();
        
        String SQL = "SELECT apr.contrato, SUM(apr.hora) ";
               SQL += "FROM Apropriacao apr ";
               SQL += "WHERE to_date(apr.dia||'/'||apr.mes||'/'||apr.ano, 'DD/MM/YYYY') ";
               SQL += "BETWEEN :dataIni AND :dataFim ";
               if (!incluirTerceiros) {
                  SQL += "AND apr.n_apropriacao < 90000 ";
               }
               if(incluirOsAusencia==false) {
                  SQL += "AND apr.os != :cadOs ";
               }
               SQL += "GROUP BY apr.contrato ";
               SQL += "ORDER BY apr.contrato ";

        try {
            Query q = sessao.createQuery(SQL);
            q.setParameter("dataIni", dataIni);
            q.setParameter("dataFim", dataFim);
            if(incluirOsAusencia==false) {
                q.setString("cadOs", dao.retornaOs().getOs());
            }
            for (Iterator it = q.iterate(); it.hasNext();) {
                Object[] obj = (Object[]) it.next();
                int contrato = Integer.parseInt(obj[0].toString());
                for (int i = 0; i < relat.size(); i++) {
                    if (contrato == relat.get(i).getContrato()) {
                        relat.get(i).setarPeriodo(Double.parseDouble(obj[1].toString()), numPeriodo);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }

        return relat;
    }

1 Resposta

Gianetti

Oracle / PLSQL: ORA-01861 Erro

Erro:

ORA-01861: literal não corresponde string de formato
Causa:

Você tentou entrar em um literal com uma seqüência de formato, mas o comprimento da string de formatação não era o mesmo comprimento que o literal.
Ação:

As opções para resolver esse erro Oracle são:
Re-enter o literal para que ele corresponda a cadeia de formato.
Por exemplo, se você tentou executar a seguinte declaração:

SELECIONE to_date ('20041308 ‘,’ aaaa / mm / dd ')
FROM dual;

Você receberia a seguinte mensagem de erro:

ORA-01861: literal does not match format string

Você poderia corrigir a declaração SQL da seguinte forma:

SELECIONE to_date ('2004 / 13/08 ‘,’ aaaa / mm / dd ')
FROM dual;

Como regra geral, se você estiver usando o to_date , to_timestamp , to_char , e funções similares, certifique-se que o literal que você fornecer corresponde a seqüência formato que você especificou.

Para obter uma lista de todas as funções Oracle, visite página web da Oracle funções .

Criado 24 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 1
Participantes 2