Abrir relatorio com o hibernate?

9 respostas
E

Olá pessoal,

Como eu faço para chamar meu relatório através do hibernate.
Para montar o relatório eu usei o JasperReports-1.2.4.

Com jdbc eu consigo chamar o relatorio, gerar um pdf ou html, etc…
Mas com o hibernate eu não consigo.

Até peguei um exemplo do guj mas não funciona.

Alguém poderia me ajudar?

Abraços

9 Respostas

nefertiti

Olá…

Não sei se é bem isso que você quer:

Session session = HibernateUtility.getSession();

 		Criteria criteria = session.createCriteria(Proprietario.class);
 		List proprietarios = criteria.list();
 		
 		String pathArquivo = "C:/ProprietarioRelatorio.jasper";

 		HashMap parameters = new HashMap();
 		
 	
 	    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(proprietarios);
 	    JasperReport jasperReport = JasperManager.loadReport(pathArquivo);
 	    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, ds);
            JasperManager.printReportToPdfFile(jasperPrint, "C:\ProprietarioRelatorio.pdf");
 	    JRViewer view = new JRViewer(jasperPrint);
        view.setVisible(true);

E vc utilizou o iReport?..porque não consigo fazer relatório com Hibernate utilizando o iReport.

Até mais

Patty

E

Então Patty eu fiz da mesma forma que você mas dá erro.

Eu utilizai o JasperReports. Como eu disse eu só consegui gerar o relatorio com o jdbc, com o hibernate não.

A menssagem de erro é o seguinte:

Exception in thread main java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils

at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:104)

at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:93)

at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)

at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:766)

at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:991)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:750)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at net.sf.jasperreports.engine.JasperManager.fillReport(JasperManager.java:836)

at com.hibernate.jasper.main.MainReports.main(MainReports.java:59)

nefertiti:
Olá…

Não sei se é bem isso que você quer:

Session session = HibernateUtility.getSession();

 		Criteria criteria = session.createCriteria(Proprietario.class);
 		List proprietarios = criteria.list();
 		
 		String pathArquivo = "C:/ProprietarioRelatorio.jasper";

 		HashMap parameters = new HashMap();
 		
 	
 	    JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(proprietarios);
 	    JasperReport jasperReport = JasperManager.loadReport(pathArquivo);
 	    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, ds);
            JasperManager.printReportToPdfFile(jasperPrint, "C:\ProprietarioRelatorio.pdf");
 	    JRViewer view = new JRViewer(jasperPrint);
        view.setVisible(true);

E vc utilizou o iReport?..porque não consigo fazer relatório com Hibernate utilizando o iReport.

Até mais

Patty

nefertiti

Olá…

Você colocou os seguintes .jar no classpath de sua aplicação?

commons-beanutils-1.5
itext-1.3.1

Se não colocar esses dois .jar (ou versões mais atuais), ele não funciona…

Até mais

Patty

E

O itext-1.3.1 eu já tinha. |Só o outro que estava faltando. Mas mesmo colocando o commons-beanutils-1.5 no meu classpath deu um outro erro:

Exception in thread main java.lang.ClassCastException: java.lang.Integer

at RelatorioTeste_1153141696796_42303.evaluate(RelatorioTeste_1153141696796_42303:162)

at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:536)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:504)

at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:806)

at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:338)

at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:325)

at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:277)

at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:399)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1289)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:631)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:228)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:750)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at com.hibernate.jasper.main.MainReports.main(MainReports.java:58)
NESTED BY :

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :

Source text : $F{id}

at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:183)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:536)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:504)

at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:806)

at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:338)

at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:325)

at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:277)

at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:399)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1289)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:631)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:228)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:750)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)

at com.hibernate.jasper.main.MainReports.main(MainReports.java:58)

Caused by: java.lang.ClassCastException: java.lang.Integer

at RelatorioTeste_1153141696796_42303.evaluate(RelatorioTeste_1153141696796_42303:162)

at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172)

 16 more

nefertiti:
Olá…

Você colocou os seguintes .jar no classpath de sua aplicação?

commons-beanutils-1.5
itext-1.3.1

Se não colocar esses dois .jar (ou versões mais atuais), ele não funciona…

Até mais

Patty

nefertiti

Olá…

Olhe as seguintes linhas:

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F{id}

E:

Caused by: java.lang.ClassCastException: java.lang.Integer
at RelatorioTeste_1153141696796_42303.evaluate(RelatorioTeste_1153141696796_42303:162)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172)

Dê uma olhada no Field “$F{id}”

Até mais

Patty

E

Então Patty eu dei uma olhada no field id e realmente estava com o tipo errado. Estava como double ao invés de integer.

Após estas mudanças eu compilei mas não aconteceu nada. Não de erro mas também não abriu o relatório.

Até mais
Eduardo

nefertiti:
Olá…

Olhe as seguintes linhas:

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : $F{id}

E:

Caused by: java.lang.ClassCastException: java.lang.Integer
at RelatorioTeste_1153141696796_42303.evaluate(RelatorioTeste_1153141696796_42303:162)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172)

Dê uma olhada no Field “$F{id}”

Até mais

Patty

nefertiti

Oi…

Você viu se foi gerado o arquivo .pdf no diretório C:\ ?

Até mais

Patty

E

Não gerou o arquivo em pdf. Mas só agora que me apareceu que o JasperManager é deprecated.
Nestas duas linhas que me aparece isso:

JasperReport jasperReport = JasperManager.loadReport(address + name + “.jasper”);

JasperManager.printReportToPdfFile(jasperPrint, address + name + “.jasper”);

nefertiti:
Oi…

Você viu se foi gerado o arquivo .pdf no diretório C:\ ?

Até mais

Patty

E

Consegui resolver o meu problema.
Sabe o exemplo que vc me passou, então toda vez que eu compilava o meu código corrompia o arquivo .jasper.
A primeira vez que eu rodava o programa ele não dava erro nenhum mas tambem não acontecia nada. Na segunda vez que eu rodava o meu programa ele dava erro (arquivo corrompido).
Mas agora eu resolvi o problema. Consegui abrir os relatorios em pdf.

Obrigado pela paciência.

Eduardo

[quote=nefertiti]Oi…

Você viu se foi gerado o arquivo .pdf no diretório C:\ ?

Até mais

Patty

Criado 24 de julho de 2006
Ultima resposta 26 de jul. de 2006
Respostas 9
Participantes 2