Boa tarde,
Para a criação de um relatório faço duas buscas, uma em cada tabela distintas. Após, crio uma lista só com os dados retornado dessas duas. Exemplo:
List<Venda> lista = new ArrayList<Venda>();
Collection<Produto> lProduto = dao.listaProduto();
for(Produto p: lProduto) {
Venda v = new Venda();
v.setVendedor(p.getVendedor);
v.setvalor(p.getValorvenda);
lista.add(v);
}
Collection<Servico> lServico = dao.listaServico();
for(Servico s: lServico) {
Venda v = new Venda();
v.setVendedor(s.getVendedor);
v.setvalor(s.getValorvenda);
lista.add(v);
}
Ok, passo para o iReport a lista. Ela esta configurada em seu group expression para o vendedor:
<field name="vendedor" class="minha.app.teste.Vendedor"/>
<groupExpression><![CDATA[$F{vendedor}]]></groupExpression>
Com o groupHeader:
<textFieldExpression><![CDATA[$F{vendedor}.getNome()]]></textFieldExpression>
Mas na exibição, não é feito esse agrupamento. Alias, ele agrupa, mas separando serviço de produto mesmo sendo o mesmo vendedor. Ex.:
Vendedor 01
Produto Teste 01 | 25,00
Produto Teste 02 | 20,00
Vendedor 01
Serviço Teste 01 | 45,00
O Serviço Teste 01 deveria esta no agrupamento de cima.
Os dois métodos que buscam a lista tem order by pelo vendedor. Já tentei fazer um Collections.sort(lista), usando como comparação o vendedor que está dentro da lista, mas não funcionou também. =/
Por gentileza, alguém poderia me ajudar?