Ajuda: JSF + Jasper - Relatório criado faltando um registro

Bom dia pessoal.

Criei meus relatórios no iReport, no entanto, quando chamado o relatório pela minha aplicação, o relatório é exibido faltando 1 registro, Alguém tem idéia de porque isto ocorre?

Classe DAO

public class RelatoriosDAO extends DataBaseUtil {

        private static final long serialVersionUID = 1L;

    public RelatoriosDAO() {
        super();
    }

...

    public ResultSet getrptInfNutriCardapio() throws SQLException, ClassNotFoundException {
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM VW_INF_NUTRI_CARDAPIO ORDER BY MODALIDADE_CARDAPIO, CARDAPIO");
        ResultSet rs = ps.executeQuery();
        if (!rs.next()) {
            rs.close();
            ps.close();
        }
        return rs;
    }

}

Bean

public class RelatoriosFace extends DataBaseUtil {

    String saida;
    String nomeRelat;
    RelatoriosDAO rptDAO = new RelatoriosDAO();
    int idPeriodoCard;

...

    //Método que retorna o caminho completo de um arquivo ou pasta da aplicação.
    private String getDiretorioReal(String diretorio) {
        HttpSession session = (HttpSession)
    FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        return session.getServletContext().getRealPath(diretorio);
    }

    //Método para retornar o nome da aplicação.
    private String getContextPath() {
        HttpSession session = (HttpSession)
    FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        System.out.println(session.getServletContext().getContextPath());
        return session.getServletContext().getContextPath();
    }

    // Metodo que gera o relatório em pdf
    private void preenchePdf(JasperPrint print) throws JRException {
        // Pego o caminho completo do PDF desde a raiz
        saida = getDiretorioReal("/pdf/" + nomeRelat + ".pdf");
        System.out.println(saida);
        // Exporto para PDF
        JasperExportManager.exportReportToPdfFile(print, saida);
        /*
        * Jogo na variável saída o nome da aplicação mais o
        * caminho para o PDF. Essa variável será utilizada pela view
        */
        saida = getContextPath() + "/pdf/" + nomeRelat + ".pdf";
        System.out.println(saida);
    }

...

    public String geraRelatorioPassandoResultSet() {
        saida = null;
        String jasper = getDiretorioReal("/jasper/" + nomeRelat + ".jasper");

        try {
            // Gero o ResultSet que será enviado a partir da conexão aberta

...

            if (nomeRelat.equals("rptInfNutriCardapio")){
                System.out.println("rptInfNutriCardapio");
                JRResultSetDataSource jrsds = new JRResultSetDataSource(rptDAO.getrptInfNutriCardapio());
                // Mando o jasper gerar o relatório
                JasperPrint print = JasperFillManager.fillReport(jasper, null, jrsds);
                // Gero o PDF
                preenchePdf(print);
                System.out.println("rptInfNutriCardapio " + saida);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    return "gotoRelatorios";
    }

}

Gero o relatório em PDF e exibo em uma pagina relatorioViewer.

Meu select retorna 9 registros, no entanto, quando gero o relatório pela aplicação são exibidos 8 registros. Quando executo o relatório diretamente pelo iReport, todos os 9 registros são exibidos.

Att:
José Luiz

Alguem tem idéia da causa deste problema e como resolve-lo?

Boa noite pessoal.

Fiz um teste, exibindo o resultado da consulta no banco em uma table. Também me trouxe a quantidade exata de registros existentes no banco.
Será que pode ser algum problema com bibliotecas? ou versão do iReports? uso a versão 3.0.0

Inclui os metodos abaixo na classe dao:

    private void populateEscola(ConfRelatorio esc, ResultSet rs) throws SQLException, ClassNotFoundException {
        esc.setPeriodo(rs.getString("PERIODO"));
        esc.setAlimento(rs.getString("ALIMENTO"));
        esc.setIdAlimento(rs.getInt("ID_ALIMENTO"));
        esc.setQtdAlimentoPer(rs.getDouble("QTDE_ALIM_PER"));
        esc.setQtdEmbPri(rs.getDouble("QTD_EMB_PRI"));
        esc.setTipoEmbPri(rs.getString("TIPO_EMBALAGEM_PRIMARIA"));
        esc.setQtdEmbSec(rs.getDouble("QTD_EMB_SEC"));
        esc.setTipoEmbSec(rs.getString("TIPO_EMBALAGEM_SECUNDARIA"));
    }
    
    public List<ConfRelatorio> getAllEscola() throws ClassNotFoundException, SQLException {
        List<ConfRelatorio> toReturn = new LinkedList<ConfRelatorio>();
        ResultSet rs = getStatement().executeQuery("SELECT PERIODO, ALIMENTO, ID_ALIMENTO, QTDE_ALIM_PER, QTD_EMB_PRI,TIPO_EMBALAGEM_PRIMARIA, QTD_EMB_SEC, TIPO_EMBALAGEM_SECUNDARIA FROM VW_QTDE_ALIM_PER");
        while (rs.next()) {
            ConfRelatorio esc = new ConfRelatorio();
            populateEscola(esc, rs);
            toReturn.add(esc);
        }
        return toReturn;
    }

Criei a classe db abaixo:

public class ConfRelatorio {

    private String periodo;
    private String alimento;
    private int idAlimento;
    private double qtdAlimentoPer;
    private double qtdEmbPri;
    private String tipoEmbPri;
    private double qtdEmbSec;
    private String tipoEmbSec;


    public ConfRelatorio() {

    }

    public String getAlimento() {
        return alimento;
    }

    public void setAlimento(String alimento) {
        this.alimento = alimento;
    }

    public int getIdAlimento() {
        return idAlimento;
    }

    public void setIdAlimento(int idAlimento) {
        this.idAlimento = idAlimento;
    }

    public String getPeriodo() {
        return periodo;
    }

    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    public double getQtdAlimentoPer() {
        return qtdAlimentoPer;
    }

    public void setQtdAlimentoPer(double qtdAlimentoPer) {
        this.qtdAlimentoPer = qtdAlimentoPer;
    }

    public double getQtdEmbPri() {
        return qtdEmbPri;
    }

    public void setQtdEmbPri(double qtdEmbPri) {
        this.qtdEmbPri = qtdEmbPri;
    }

    public double getQtdEmbSec() {
        return qtdEmbSec;
    }

    public void setQtdEmbSec(double qtdEmbSec) {
        this.qtdEmbSec = qtdEmbSec;
    }

    public String getTipoEmbPri() {
        return tipoEmbPri;
    }

    public void setTipoEmbPri(String tipoEmbPri) {
        this.tipoEmbPri = tipoEmbPri;
    }

    public String getTipoEmbSec() {
        return tipoEmbSec;
    }

    public void setTipoEmbSec(String tipoEmbSec) {
        this.tipoEmbSec = tipoEmbSec;
    }

}

Inclui o metodo abaixo no Bean

    public List<ConfRelatorio> getEscolaFiltro() throws ClassNotFoundException, SQLException {
    confRelatorio = null;
    if (confRelatorio == null){
        confRelatorio = rptDAO.getAllEscola();
        }
        return confRelatorio;
    }

E a pagina:

<jsp:root xmlns:ui="http://java.sun.com/jsf/facelets" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ice="http://www.icesoft.com/icefaces/component">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<html>
<head>
    <title>SIGAE - escolas</title>
</head>

<body  bgcolor="#E6FEFF">
    <ui:include src="menu.jspx"></ui:include>
        <br/><br/><br/>
        <div style="font-family: Arial, Helvetica, sans-serif; font-size: 14pt;" align="center">ESCOLAS</div><br/><br/>
    <ice:form>
        <ice:messages/>
        <div style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" align="center">
            <ice:commandButton action="gotoListEscola" value="Cancelar"/>
            <ice:commandButton action="#{EscolaFace.startAddEscola}" value="Adicionar"/><br/><br/>

            <ice:dataTable style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt;" bgcolor="white" border="1" var="item" value="#{RelatoriosFace.escolaFiltro}">
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="id escola"/>
                    </f:facet>
                        <ice:outputText value="#{item.periodo}" style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt"/>
                </ice:column>
                <ice:column>
                    <f:facet name="header">
                        <ice:outputText value="id escola"/>
                    </f:facet>
                        <ice:outputText value="#{item.alimento}" style="font-family: Arial, Helvetica, sans-serif; font-size: 11pt"/>
                </ice:column>
            </ice:dataTable>
        </div>
    </ice:form>
</body>
</html>
</f:view>
</jsp:root>

Retornaram 9 registros. No meu relatório gerado em pdf retornam 8 registros

Pude observar que o registro que falta no relatório é sempre o primeiro reotornado na consulta, independentemente do relatório chamaado.