Ordenar dados do Crosstab Ireport

Bom dia galera, tdo certo? Bem, estou fazendo um relatório de boletim. Nele, tenho um agrupamento por aluno e dentro do mesmo tenho um crosstab que informa as disciplinas, os períodos ( 1º trimestre, 2º trimestre, 3º trimestre, media final…etc) e as notas…
Bom, até aí tudo bem…O relatório está funcionando…Só que agora estou querendo ordenar as disciplinas apartir de uma collection…Pois faço o relatório apartir de uma lista…A minha collection seria apartir do seguinte: disciplina.gradeCollection.
Estou pesquisando e tal, mas nao estou sabendo onde ordenar e nem como colocar essa disciplina.gradeCollection dentro do relatório. A disciplina é um objeto que eu tenho apartir de um FK na minha classe.

Em uma tela estou fazendo o seguinte para retornar as disciplinas conforme a ordem que preciso:

public List<Nota> buscaNotasFinaisPorMatricula(Matricula matric, Integer ano) {
        String sqlNotasFinais = "select * from edu_notas"
                + " inner join edu_escolas on edu_escolas.esc_codigo = edu_notas.not_codescola"
                + " left join edu_grade g on g.gra_codetapa = edu_notas.not_codetapa"
                + " inner join edu_disciplinas on edu_disciplinas.dis_codigo = edu_notas.not_coddisciplina"
                + " inner join edu_turmas on edu_turmas.tur_codigo = edu_notas.not_codturma"
                + " inner join edu_aluno on edu_aluno.alu_codigo = edu_notas.not_codaluno"
                + " WHERE edu_aluno.alu_codigo =?1"
                + " AND edu_escolas.esc_codigo =?2"
                + " AND edu_turmas.tur_codigo =?3"
                + " AND edu_notas.not_codetapa =?4"
                + " AND edu_notas.not_ano =?5"
                + " AND edu_notas.not_periodo = 95 and g.gra_coddisc = edu_notas.not_coddisciplina order by g.gra_ordem asc";
        List<Nota> notasFinais = crudService.executeNativeQuery(sqlNotasFinais, Nota.class,
                matric.getAluno().getCodigo().toString(),
                matric.getEscola().getCodigo().toString(),
                matric.getTurma().getCodigo().toString(),
                matric.getEtapa().getCodigo().toString(),
                ano.toString());
        return notasFinais;
    }

E para o relatório que preciso não estou conseguindo fazer…Tenho o seguinte:


public static final String PREFIXO_OBJETO = "n";
    private static final String QUERY_NOTAS = "select n from Nota n left join fetch n.turma "
            + "left join fetch n.escola left join fetch n.disciplina left join fetch n.aluno";

@TransactionAttribute(TransactionAttributeType.NEVER)
    public List<Nota> listaBoletimSimple(Map<String, Object> parametros) {
        String orderBy = ServiceUtil.montaOrderBy("aluno.nome", true, PREFIXO_OBJETO);
        return crudService.executeQuery(QUERY_NOTAS, orderBy, criaFiltros(parametros));
    }

Sendo que o que eu acredito que devo implemtenar é o seguinte, corfome o metódo buscaNotasFinaisPorMatricula

  private static final String QUERY_NOTAS = "select n from Nota n left join fetch n.turma "
            + "left join fetch n.escola left join fetch n.disciplina left join fetch n.aluno";

Se alguém puder ajudar ou dar ideias de como posso ordenar as disciplinas dentro do crosstab ficaria mtoo grato…Vlw

Alguém poderia dar uma ajuda aí?? Vlw…