Oi gente,
estou com um problema na geração de um relatorio com subrelatorio.
Eu estou seguindo o tutorial do Furutani (http://br.geocities.com/robertofurutani/java/Tutorial_JasperReports/index.htm) para fazer meu relatorio, mas nao to conseguindo.
Antes de dizer o problema vou explicar meu relatorio. Tenho a tabela Grupo, Item e ItemCardapio. A tabela Item tem uma relação de 1…n com Item Cardapio e ItemCardapio tem relação de 1…1 com Item
Eu quero listar todos os grupos e, para cada grupo, um subrelatorio lista as propriedades de item e ItemCardapio.
Bom, a ligação entre o relatorio e o subrelatorio se da atraves do campo ListaItens.
No método getFieldValue da classe ItemDataSource, qdo ele encontra o campo ListaItens, eu digo que o valorAtual é uma lista de Object que eu pego de um DAO. Essa lista contem informações sobre o item e o itemCardapio relacionados ao grupo atual. Por conter informações sobre duas tabelas diferentes o tipo dessa lista é Object.
Um trecho da classe ItemDataSource é mostrada abaixo:
public Object getFieldValue(JRField campo) throws JRException {
Object valor = null;
Grupo grupo = (Grupo) valorAtual;
if ("id".equals(campo.getName())) {
valor = grupo.getId();
} else if ("ListaItens".equals(campo.getName())) {
List<Object> lista= null;
try{
lista = dao.findItemItemCardapioByGrupo(grupo.getId());
}
catch(Exception e){
e.printStackTrace();
}
valor = new JRBeanCollectionDataSource(lista);
} else if ("descricao".equals(campo.getName())) {
valor = grupo.getDescricao();
}
return valor;
}
Porém ta dando a excecao:
Onde preco é um atributo da classe Item.
Quando eu testei com uma lista so de objetos Item, por exemplo, deu certo. Mas quando essa lista tem informações de mais de uma tabela nao da certo!!
Entao como é que eu posso fazer um subrelatorio que tem informações de mais de uma classe???
Agradeço qq ajuda!