Olá!
O Cenário é o seguinte:
Aplicação Swing com hibernate e JasperReports;
No ireport o meu relatório compila e aparece bonitaço, porem ao chamar o relatório na aplicação dá o seguinte erro:
Caused by: java.lang.NoSuchFieldError: BOOLEAN
Tenho campos booleanos no app. Meu db é MySQL, e estes campos estão com char(1).
O programa insere, deleta e altera numa boa. Na versão antiga, sem Hibernate, o relatório aparece sem alteração.
Jaspersoft iReport Designer 4.0.0
hibernate-distribution-3.6.1.Final
Tomara que alguem tenha superado este erro.
Mais informação:
Nas ultimas tentativas, constatei que tem a ver com o subrelatório que tenho junto ao relatório principal,
pois removi o subrelatório e recomplilei o relatorio, substitui o .jasper no app e boomm … o relatório é exibido…
Porém … no subrelatório não há nenhum campo booleano que pudesse ser o suspeito da bagunça… alias
os campos boolanos estão no relatório principal e apareceram certinhos… continuo em testes …
Mais coisa:
removi todos os campos do subrelatório e adivinha?! … mesmo erro …
Já tô achando que é bug do Ireport novo …
vou tentar bolar um relatório sem subrelatório pra ver no que dá…
obs:
Tenho um Set mapeado na Classe que é base para o relatório principal que “lista” as coisas que deveria conter no sub,
porem não consegui fazer essa magica com o subrelatorio, o subrelatorio é alimentado por um select proprio usando
como parametro o campoChave da Classe do relatório principal… repito, no ireport funciona bem …
porém na aplicação dá esse erro que nomeia o tópico.
O metodo do meu DAO que popularia o relatório retorna um List e tem o mesmo query do ireport…
Enfim … pelo geito o erro era pelo uso do subRelatório … não consegui resolver isso, mas contornei o meu prolema da seguinte maneira:
Retirei o subrelatorio do relatório principal, e refiz o HQL assim: "from CargaEquipamentoVo"
Consideremos que eu esteja lidando com as seguintes Classes(tabelas): CargaVo, EquipamentoVo, CargaEquipamentoVo
No caso selecionei os campos/registros da classe/ tabela (CargaEquipamentoVo) que une as outras duas para mostrar no relatório.
Graças ao hibernate consegui acessar dados individuais das duas tabelas pelo campo chave da 3ª tabela, +ou- assim: "Carga: "+$F{chaveComposta}.getCarga().getChave()
No aplicativo só foi necessário ajustar os HQLs conforme os tipos de relatório que eu queria…
Em suma, ainda não faço idéia o porque do erro que me fez geram este tópico, se alguem tiver uma idéia me avise…
Obrigado!
Resolvi dessa forma: