Session sax = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = sax.beginTransaction();
Map<String, Object> map = new HashMap<String, Object>();
map.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, sax);
//map.put(, session);
String relativeWebPath = "/reports/factura_template1.jasper";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
JasperPrint print = JasperFillManager.fillReport(new FileInputStream(new File(absoluteDiskPath)),map);
byte[] report = JasperExportManager.exportReportToPdf(print);
我们正在使用Hibernate 3.6(JPA Annotations)和Jasperreports 4.1.1作为报告引擎,当我尝试调用报告时,我得到了这个例外:
java.lang.NoSuchFieldError: BOOLEAN
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.<clinit>(JRHibernateQueryExecuter.java:70)
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory.createQueryExecuter(JRHibernateQueryExecuterFactory.java:136)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:724)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:625)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1238)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:869)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:398)
at mx.com.facture.FactureApp.server.ReportExporter.ServletExporter.doGet(ServletExporter.java:198)
还有其他人遇到过这个问题吗?你是怎么解决的?
谢谢。
答案 0 :(得分:4)
即使我得到同样的错误...... 这是因为Hibernate 3.6已经弃用了“org.hibernate.Hibernate.BOOLEAN”(以及其他类似的类型)。 他们已将所有类型合并为“org.hibernate.type.StandardBasicTypes”类。
解决方案很简单。
1)从JasperReports主页下载整个(带源代码)jasper tar.gz文件
2)解压缩文件(让该位置称为$ JASPER_SOURCE)
3)VIM $ JASPER_SOURCE / SRC /净/ SF / JasperReports的/发动机/查询/ JRHibernateQueryExecuter.java
4)在顶部导入语句中添加以下行
import org.hibernate.type.StandardBasicTypes;
5)现在从第71行开始将所有“Hibernate”更改为“StandardBasicTypes”(直到静态块结束,直到第84行)
6)保存并退出编辑器
7)将最新的hibernate3.jar(3.6.x版本)复制到“$ JASPER_SOURCE / lib”位置
8)现在从$ JASPER_SOURCE位置
执行以下ant命令ant jar
您将在lib / jasperreports-4.x.x.jar位置获得修改后的jar。将jar用于您的项目
---------------或-------------------
另一个解决方案是在项目中使用旧的hibernate3.jar文件(版本3.0.x)
答案 1 :(得分:2)
将现有的hibernate3.jar替换为JasperReports包中存在的hibernate3.jar。