Collection em Crosstab Ireport

Bom dia galera, tudo certo ?? Bem, estou fazendo um relatório utilizando um crosstab. Faço o relatório a partir da minha classe de entidade do BD. No crosstab, estou querendo passar uma em um dos campos uma collection apartir do seguinte caminho: turma.etapa.gradeCollection, sendo turma e etapa dois objetos. Estou fazendo o relatório apartir da minha classe Nota… Tenho esse caminho pelo seguinte motivo:
classes

@Entity
@Table(name = "EDU_NOTAS")
public class Nota implements Serializable, Auditable {
 @JoinColumn(name = "NOT_CODTURMA", referencedColumnName = "TUR_CODIGO")
    @ManyToOne
    private Turma turma;
//gett e sett
}

@Entity
@Table(name = "EDU_TURMAS")
public class Turma implements Serializable, Auditable {
@JoinColumn(name = "TUR_CODETAPA", referencedColumnName = "ETA_CODIGO")
    @ManyToOne
    private Etapa etapa;
// gett e sett
}

@Entity
@Table(name = "EDU_ETAPAS")
public class Etapa implements Serializable, Auditable {
 @OneToMany(mappedBy = "etapa")
    private Collection<Grade> gradeCollection;
//gett e sett
}

Tentei passar por parâmetro, tentei utilizar um field e no field Class passar como collection, mas dá o seguinte erro, mas sempre no campo quando imprimo o relatório, aparece o seguinte:

{IndirectList: not instantiated}

Se alguém puder ajudar ou explicar como passar a collection para o crosstab do relatório, fico mto grato. Vlw

Ricardo vc criou o parâmetro no Ireport para receber a lista?
Mande o código da classe que está mandando para o relatório, veja também debugando se a lista está mesmo preenchida. Mande a exceção se tiver sendo gerada.

Veja se neste artigo algo lhe auxilia, tem algumas dicas importantes!!

[quote=alexandresobral2004]Veja se neste artigo algo lhe auxilia, tem algumas dicas importantes!!

http://tiagoribeirof.blogspot.com.br/2011/04/compilacao-de-dicas-ireport.html[/quote]
Olá alexandresobral2004. Bem cara, só que o problema é que não vou poder utilizar um subRelatório, porque no crosstab já utilizo apartir da minha classe nota. E se criar um subrelatorio, os campos que irão dentro dele não vão ser somente os campos que possuo a apartir da list que vou passar para ele?

Qual a estrutura que vc tá montando? explique ai pra ver se consigo lhe auxiliar, vc vai montar um crosstab e tb um subrelatório no mesmo relatório?

[quote=alexandresobral2004]Ricardo vc criou o parâmetro no Ireport para receber a lista?
Mande o código da classe que está mandando para o relatório, veja também debugando se a lista está mesmo preenchida. Mande a exceção se tiver sendo gerada.

[/quote]
Bem alexandre, criei sim, o parâmentro que criei é o seguinte: cargaHorariaGrade, sendo que dentro da classe Grade preciso pegar somente o campo cargaHoraria de cada disciplina. Debuguei o projeto e a lista ( collection) está vindo carregada. Abaixo, como estou fazendo o relatório no meu Bean:

public class NotaJsfBean extends BaseCRUDJSFBean<Nota> {
 public static final String RELATORIO_ATARESULTADOSFINAIS = "ataResultadosFinais";
    private BigDecimal escalaDeNotasMax;
    private BigDecimal escalaDeNotasMin;
    private String escalaDeNotas;
    private String observacoesFinais;
    private List<Nota> notasMediaFinal = new ArrayList<Nota>();

    public void geraRelatorioAtaResultadosFinais(boolean isPDF) {
        String parametroRelatorioVazio;
        nomeRelatorio = "Ata de Resultados Finais";
        Map<String, String> parametros = new HashMap<String, String>();
        if (notasMediaFinal.isEmpty()) {
            parametroRelatorioVazio = "Não há dados para exibir.";
        } else {
            parametroRelatorioVazio = "";
        }
        escalaDeNotasMax = turma.getEtapa().getFormaAvaliacao().getNotaMaxima();
        escalaDeNotasMin = turma.getEtapa().getFormaAvaliacao().getNotaMinima();

        if (escalaDeNotasMax != null && escalaDeNotasMin != null) {
            escalaDeNotas = escalaDeNotasMin + " à " + escalaDeNotasMax;
        } else {
            escalaDeNotas = "Notas não informadas.";
        }

        if (observacoesFinais.isEmpty() || observacoesFinais.equals("")) {
            observacoesFinais = " ";
        }

        if (dataReferenciaFinal != null) {
            fraseParaAta = "Aos " + DateUtil.getDataParaAtas(dataReferenciaFinal)
                    + ", conclui-se a apuração do rendimento escolar dos alunos"
                    + " nos termos da Lei 9394/96.";
        }

        fraseFinalAta = "E para constar, lavro a presente ata.";
        parametros.put("parametroRelatorioVazio", parametroRelatorioVazio);
        parametros.put("nomeRelatorio", nomeRelatorio);
        parametros.put("escalaDeNotas", escalaDeNotas);
        parametros.put("fraseParaAta", fraseParaAta);
        parametros.put("fraseFinalAta", fraseFinalAta);
	    parametros.put("cargaHorariaGrade", turma.getEtapa().getGradeCollection().toString());
        parametros.put("dataReferenciaAssinatura", DateUtil.DataPorExtenso(dataReferenciaAssinatura));
        parametros.put("observacoesFinais", observacoesFinais);

        geraRelatorioPDF(notasMediaFinal, RELATORIO_ATARESULTADOSFINAIS, parametros);
    }

Só que quando passo o parâmetro para o relatório, ele até imprime o campo. Só que está dando o erro que mencionei no início ( que a lista aparentemente não está instanciada) … Poderia dar uma ajuda aí ?? VLw

Bem, pretendo montar somente um crosstab. Na verdade, já está montado… Quer que eu mander o relat para dar uma olhada ??

Ricardo pelo que vi do seu relatório vc está passando todos os parametros e a listas via MAP:

Já tentou passar somente a lista desta forma e os parâmetros via MAP, eu faço dessa forma, mando como está abaixo para o relatório e outros atributos do tipo string ou int mando via MAP.

 JRDataSource jrRS = new JRBeanCollectionDataSource(lista);

Depois vc cria um parâmetro dentro do ireport do tipo collection.

Depois vc carrega os atributos do bean que vc quiser via “JAVABEAN DATA SOURCE” no report query, não sei se vc já fez isso ou mesmo se sabe como fazer.

Se vc passar a lista que vc quer para dentro do ireport desta forma vc pode escolher o atributo que quiser dela e inclusive navegar entre os mapeamentos do objeto.

O que lhe falei tem mostrando aqui, da uma lida com calma neste artigo e veja se lhe auxilia

[quote=alexandresobral2004]Ricardo pelo que vi do seu relatório vc está passando todos os parametros e a listas via MAP:

Já tentou passar somente a lista desta forma e os parâmetros via MAP, eu faço dessa forma, mando como está abaixo para o relatório e outros atributos do tipo string ou int mando via MAP.

 JRDataSource jrRS = new JRBeanCollectionDataSource(lista);

Depois vc cria um parâmetro dentro do ireport do tipo collection.

Depois vc carrega os atributos do bean que vc quiser via “JAVABEAN DATA SOURCE” no report query, não sei se vc já fez isso ou mesmo se sabe como fazer.

Se vc passar a lista que vc quer para dentro do ireport desta forma vc pode escolher o atributo que quiser dela e inclusive navegar entre os mapeamentos do objeto.

[/quote]
Bem, até hoje só passei poor Map mesmo. Posso tentar passar da maniera que falou(JRDataSource …) . Com relação ao report Query, nunca utilizei…Saberia me dizer o pq do “erro” que dá na impressão da lista no relatório ?? (o pq da impressão: {IndirectList: not instantiated} ) no campo do tipo collection ?? Vlw

[quote=alexandresobral2004]O que lhe falei tem mostrando aqui, da uma lida com calma neste artigo e veja se lhe auxilia

http://javasemcafe.blogspot.com.br/2011/06/jasperreports-401-utilizando-subreports.html[/quote]
Blz, vou ler, depois mais posto se tiver dúvidas…Vlw…

Cara eu considero o ireport bem complexo e tem pouco material na net para as funções avançadas dele, ainda n vi um erro como esse q vc está tendo, tente implementar como lhe mandei ai no artigo. Eu to aprendendo a trabalhar com ele assim como vc, apanhando dias pra fazer algo, estou agora mesmo tento um problema em passar 2 listas para o mesmo relatório e não estou conseguindo.

Nem me fale em apanhar pra trabalhar com ele…SAHUSAUHSAHU
está fazendo com subRelatorio ??

Não, estou fazendo usando tabelas, olha o link do meu post aqui
http://www.guj.com.br/java/303829-como-juntar-informacoes-de-2-bancos-de-dados-num-relatorio-consolidado

veja se pode me auxiliar com isso!!

[quote=alexandresobral2004]Não, estou fazendo usando tabelas, olha o link do meu post aqui
http://www.guj.com.br/java/303829-como-juntar-informacoes-de-2-bancos-de-dados-num-relatorio-consolidado

veja se pode me auxiliar com isso!!

[/quote]
Puts cara, coisa bemm complicada hein…Infelizmente, nao tenho ideia de como fazer isso…

[quote=Ricardo Fávero Júnior][quote=alexandresobral2004]Ricardo pelo que vi do seu relatório vc está passando todos os parametros e a listas via MAP:

Já tentou passar somente a lista desta forma e os parâmetros via MAP, eu faço dessa forma, mando como está abaixo para o relatório e outros atributos do tipo string ou int mando via MAP.

 JRDataSource jrRS = new JRBeanCollectionDataSource(lista);

Depois vc cria um parâmetro dentro do ireport do tipo collection.

Depois vc carrega os atributos do bean que vc quiser via “JAVABEAN DATA SOURCE” no report query, não sei se vc já fez isso ou mesmo se sabe como fazer.

Se vc passar a lista que vc quer para dentro do ireport desta forma vc pode escolher o atributo que quiser dela e inclusive navegar entre os mapeamentos do objeto.

[/quote]
Bem, até hoje só passei poor Map mesmo. Posso tentar passar da maniera que falou(JRDataSource …) . Com relação ao report Query, nunca utilizei…Saberia me dizer o pq do “erro” que dá na impressão da lista no relatório ?? (o pq da impressão: {IndirectList: not instantiated} ) no campo do tipo collection ?? Vlw[/quote]

Bom, então para eu passar por parâmetro ficaria dessa maneira abaixo no meu bean ??

 JRDataSource jrRS = new JRBeanCollectionDataSource(turma.getEtapa().getGradeCollection());
 (Map<String, String> parametros = new HashMap<String, String>(); )
p.put("jrRS",jrRS.toString );
}

Se puder continuar ajudando, agradeço mto cara… Apanhei um tempo para fazer isso… Daí nao consegui, parti fazer outras coisas…Agora voltei nele pra ver se consigo…

Só que no meu caso, eu precisaria pegar a carga horária de cada Disciplina, ou seja, pegar a carga Horária de cada objeto… Teria como fazer isso do jeito que estou fazendo??

Alguém mais poderia dar uma ajuda aí?? Se laguém puder ajudar, agradeço mto… Vlw.

Boa noite galera, alguém mais poderia dar uma ajuda aí ?? Se alguém puder ajudar, agradeço mto…vlw

Bom dia galera, tdo certo ? Ainda não consegui resolver o problema com a collection, alguém mais poderia dar uma ajuda aí? Se alguém puder ajudar, agradeço mto…Vlw