Erro na consulta ao gerar Relatório.(RESOLVIDO)

Olá, estou com um problema numa consulta com banco de dados…

Uso banco Oracle, e tenho que gerar um relatório, onde imprima os funcionarios que entrarem após as 9:00 e que saia antes das 17:00 …
E quando clico no botão gerar relatório tenho o seguinte erro :

Ele não informa exatamente onde, mas sabe que o erro está no meu SELECT, só que no banco funciona perfeitamente!
esse é meu DAO, onde está o erro.
tenho também que converter meu hora de String pra hora . tentei com timestamp mas não deu muito certo …

[code]
public List horasFuncionarioPeriodo(Date dataInicio, Date dataFinal) throws ParseException {
List listaTotal = new ArrayList();
HorasFuncionarioPeriodo horasFunc = new HorasFuncionarioPeriodo();
SimpleDateFormat sf = new SimpleDateFormat(“dd/MM/yyyy”);

    Session session = HibernateUtil.getSession();
    try {
        session.beginTransaction();
        String hql = "SELECT f.sigla, f.nome, f.tipo, f.n_apropriacao, f.local, f.centroCusto" +
                "f.Descricao, h.hora, h.dtDia as data, h.destino as registro";
               hql += "FROM Funcionario f, Horario h";
               hql += "WHERE h.dtDia BETWEEN :dataInicio AND :dataFinal";
               hql += "AND to_date(h.hora, 'HH24:MI') > to_date('09:00', 'HH24:MI')";
               hql += "AND to_date(h.hora, 'HH24:MI') < to_date('09:00', 'HH24:MI')";
               //hql += "AND to_timestamp(h.hora, 'HH24:MI') > to_timestamp('09:00', 'HH24:MI')";
               //hql += "AND to_timestamp(h.hora, 'HH24:MI') < to_timestamp('17:00', 'HH24:MI')";
               hql += "AND flag_destino <> 'atestado'";
        
        Query query = session.createQuery(hql);
        query.setParameter("dataInicio", dataInicio);
        query.setParameter("dataFinal", dataFinal);

        for (Iterator it = query.iterate(); it.hasNext();) {
            horasFunc = new HorasFuncionarioPeriodo();
            Object[] registro = (Object[]) it.next();

            horasFunc.setSigla(registro[0].toString());
            horasFunc.setNome(registro[1].toString());
            horasFunc.setTipo(registro[2].toString());
            horasFunc.setN_apropriacao(Integer.parseInt(registro[3].toString()));
            horasFunc.setLocal(registro[4].toString());
            horasFunc.setCentroCusto(registro[5].toString());
            horasFunc.setHora(registro[6].toString());
            horasFunc.setData(sf.parse(registro[7].toString()));
            horasFunc.setRegistro(registro[8].toString());

            listaTotal.add(horasFunc);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        session.close();
    }
    return listaTotal;

}[/code]

e esse é meu código do Banco .

select f.sigla,f.nome,f.tipo,f.n_apropriacao,f.local,f.centro_custo,f.descricao,
h.hora,h.dt_dia as data,h.destino as registro
from funcionario f, horario_unico h
where h.dt_dia between to_date(‘01/06/2011’, ‘DD/MM/YYYY’)
and to_date(‘03/06/2011’, ‘DD/MM/YYYY’)
and to_timestamp(h.hora, ‘HH24:MI’) > to_timestamp(‘09:00’, ‘HH24:MI’)
and to_timestamp(h.hora, ‘HH24:MI’) < to_timestamp(‘17:00’, ‘HH24:MI’)
and h.flag_destino <> ‘atestado’

Alguém pode me ajudar ?

Obrigado!

f.centroCustof.Descricao
registroFROM
hWHERE

Faltam espaços e virgulas no teu HQL

[quote=pmlm][quote=GNunesOliveira]

[/quote]
f.centroCustof.Descricao
registroFROM
hWHERE

Faltam espaços e virgulas no teu HQL[/quote]

Oi Pmlm,

Obrigado, realmente era isso …

só que agora da o seguinte erro …

eu estou convertendo hora dessa maneira,

"AND current_timestamp(h.hora, 'HH24:MI') > current_timestamp('09:00', 'HH24:MI')"
+ "AND current_timestamp(h.hora, 'HH24:MI') < current_timestamp('17:00', 'HH24:MI')"

está certo ?!!?

Desculpa tantas perguntas é que tudo isso é muito recente pra mim …
e tem coisas que você não acha em livros…

MUITO Obrigado!

beijos.

Não será descricao em vez de Descricao?

[quote=pmlm][quote=GNunesOliveira]

[/quote]
Não será descricao em vez de Descricao?[/quote]

Sim sim, ele estava puxando descricao da classe errada …

e tinha que converter minha data, mesmo ela já sendo do tipo Data. (o que é estranho né, mas… pelo menos funciona … ) …

ficou assim. .

public List horasFuncionarioPeriodo(Date dataInicio, Date dataFinal) throws ParseException {
        List<HorasFuncionarioPeriodo> listaTotal = new ArrayList<HorasFuncionarioPeriodo>();
        HorasFuncionarioPeriodo horasFunc = new HorasFuncionarioPeriodo();
        SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");

        Session session = HibernateUtil.getSession();
        try {
            session.beginTransaction();
            String hql = "SELECT f.sigla, f.nome, f.tipo, f.n_apropriacao, f.local, f.centroCusto, f.descricaoCC, h.hora, h.dt_Dia as data, h.destino as registro "; 
                   hql += "FROM Funcionario f, Horario h ";
                   hql += "WHERE to_date(h.dt_Dia, 'dd/MM/yyyy') BETWEEN :dataInicio AND :dataFinal ";
                   hql += "AND to_timestamp(h.hora, 'HH24:MI') > to_timestamp('09:00', 'HH24:MI') ";
                   hql += "AND to_timestamp(h.hora, 'HH24:MI') < to_timestamp('17:00', 'HH24:MI') ";
                   hql += "AND flag_destino <> 'atestado'";

            Query query = session.createQuery(hql);
            query.setParameter("dataInicio", dataInicio);
            query.setParameter("dataFinal", dataFinal);

            for (Iterator it = query.iterate(); it.hasNext();) {
                horasFunc = new HorasFuncionarioPeriodo();
                Object[] registro = (Object[]) it.next();

                horasFunc.setSigla(registro[0].toString());
                horasFunc.setNome(registro[1].toString());
                horasFunc.setTipo(registro[2].toString());
                horasFunc.setN_Apropriacao(Integer.parseInt(registro[3].toString()));
                horasFunc.setLocal(registro[4].toString());
                horasFunc.setCentroCusto(registro[5].toString());
                horasFunc.setDescricao(registro[6].toString());
                horasFunc.setHora(registro[7].toString());
                horasFunc.setData(sf.parse(registro[8].toString()));
                horasFunc.setRegistro(registro[9].toString());

                listaTotal.add(horasFunc);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.close();
        }
        return listaTotal;

Obrigado pela ajuda!

Valeu .

Abraços.

Me pintou mais uma duvida…

gerou o erro NullPointerException … e é na minha consulta que está recebendo nulo, todos os campos… como faço pra reverter isso !!!
segue abaixo a consulta .

try {  
            session.beginTransaction();  
            String hql = "SELECT f.sigla, f.nome, f.tipo, f.n_apropriacao, f.local, f.centroCusto, f.descricaoCC, h.hora, h.dt_Dia as data, h.destino as registro ";   
                   hql += "FROM Funcionario f, Horario h ";  
                   hql += "WHERE to_date(h.dt_Dia, 'dd/MM/yyyy') BETWEEN :dataInicio AND :dataFinal ";  
                   hql += "AND to_timestamp(h.hora, 'HH24:MI') > to_timestamp('09:00', 'HH24:MI') ";  
                   hql += "AND to_timestamp(h.hora, 'HH24:MI') < to_timestamp('17:00', 'HH24:MI') ";  
                   hql += "AND flag_destino <> 'atestado'";  
  
            Query query = session.createQuery(hql);  
            query.setParameter("dataInicio", dataInicio);  
            query.setParameter("dataFinal", dataFinal);  
  
            for (Iterator it = query.iterate(); it.hasNext();) {  
                horasFunc = new HorasFuncionarioPeriodo();  
                Object[] registro = (Object[]) it.next();  
  
                horasFunc.setSigla(registro[0].toString());  
                horasFunc.setNome(registro[1].toString());  
                horasFunc.setTipo(registro[2].toString());  
                horasFunc.setN_Apropriacao(Integer.parseInt(registro[3].toString()));  
                horasFunc.setLocal(registro[4].toString());  
                horasFunc.setCentroCusto(registro[5].toString());  
                horasFunc.setDescricao(registro[6].toString());  
                horasFunc.setHora(registro[7].toString());  
                horasFunc.setData(sf.parse(registro[8].toString()));  
                horasFunc.setRegistro(registro[9].toString());  
  
                listaTotal.add(horasFunc);  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            session.close();  
        }  
        return listaTotal;

e o erro.

Hibernate: /* SELECT f.sigla, f.nome, f.tipo, f.n_apropriacao, f.local, f.centroCusto, f.descricaoCC, h.hora, h.dt_Dia as data, h.destino as registro FROM Funcionario f, Horario h WHERE to_date(h.dt_Dia, 'dd/MM/yyyy') BETWEEN :dataInicio AND :dataFinal AND to_timestamp(h.hora, 'HH24:MI') > to_timestamp('09:00', 'HH24:MI') AND to_timestamp(h.hora, 'HH24:MI') < to_timestamp('17:00', 'HH24:MI') AND flag_destino <> 'atestado' */ select funcionari0_.sigla as col_0_0_, funcionari0_.nome as col_1_0_, funcionari0_.tipo as col_2_0_, funcionari0_.n_apropriacao as col_3_0_, funcionari0_.local as col_4_0_, funcionari0_.CENTRO_CUSTO as col_5_0_, funcionari0_.DESCRICAO as col_6_0_, horario1_.hora as col_7_0_, horario1_.dt_Dia as col_8_0_, horario1_.destino as col_9_0_ from funcionario funcionari0_, horario_unico horario1_ where (to_date(horario1_.dt_Dia, 'dd/MM/yyyy') between ? and ?) and to_timestamp(horario1_.hora, 'HH24:MI')>to_timestamp('09:00', 'HH24:MI') and to_timestamp(horario1_.hora, 'HH24:MI')<to_timestamp('17:00', 'HH24:MI') and flag_destino<>'atestado'
Erro ao gerar o relatorio. java.lang.NullPointerException
java.lang.NullPointerException
        acompanhamento.relatorios.RelatorioHorasFuncPeriodo.gerarRelatorio(RelatorioHorasFuncPeriodo.java:42)    

essa linha que aponta o erro é essa daqui …

            (40) beanRelatorios = new JRBeanCollectionDataSource(dao.gethorasFuncionarioPeriodo(dataInicio, dataFinal));
            
            (42) impressao = JasperFillManager.fillReport(caminhoJasper, parametros, beanRelatorios);

e o erro está em beanRelatorios, que puxa do dao minha consulta .