JasperReports 4.1+;Hibernate 3.6 java.lang.NoSuchFieldError:布尔值

JasperReports 4.1+;Hibernate 3.6 java.lang.NoSuchFieldError:布尔值,hibernate,jasper-reports,Hibernate,Jasper Reports,我试图调用在iReport 4.1.1中生成的报告时出错 Session sax = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = sax.beginTransaction(); Map<String, Object> map = new HashMap<String, Object>(); map.p

我试图调用在iReport 4.1.1中生成的报告时出错

        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);
会话sax=HibernateUtil.getSessionFactory().openSession(); 事务=sax.beginTransaction(); Map Map=newhashmap(); put(jrhbernateQueryExecuterFactory.PARAMETER\u HIBERNATE\u SESSION,sax); //map.put(,session); 字符串relativeWebPath=“/reports/factura_template1.jasper”; 字符串absoluteDiskPath=getServletContext().getRealPath(relativeWebPath); JasperPrint print=JasperFillManager.fillReport(新文件输入流(新文件(绝对磁盘路径)),map); byte[]report=jaspeexportmanager.exportReportToPdf(打印); 我们使用Hibernate 3.6(JPA注释)和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)
java.lang.NoSuchFieldError:布尔值
在net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.(JRHibernateQueryExecuter.java:70)
在net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory.createQueryExecuter(JRHibernateQueryExecuterFactory.java:136)
位于net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:724)
位于net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:625)
net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1238)
位于net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:869)
位于net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)
位于net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)
位于net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:398)
在mx.com.facture.FactureApp.server.ReportExporter.ServletExporter.doGet(ServletExporter.java:198)
还有谁遇到过这个问题?你是怎么解决的


谢谢。

即使是我也会遇到同样的错误。。。 这是因为Hibernate3.6不推荐使用“org.Hibernate.Hibernate.BOOLEAN”(以及其他类似类型)。 他们已将所有类型合并到“org.hibernate.type.StandardBasicTypes”类中

解决方案 解决方案非常简单

1) 从JasperReports主页下载整个(带源代码)jasper tar.gz文件

2) 卸载文件(将该位置称为$JASPER_SOURCE)

3) vim$JASPER_SOURCE/src/net/sf/jasperreports/engine/query/jrhbernatequeryexecuter.java

4) 在顶部的导入语句中添加以下行

导入org.hibernate.type.StandardBasicTypes

5) 现在从第71行开始,将所有“Hibernate”更改为“StandardBasicTypes”(直到静态块结束,即直到第84行)

6) 保存并退出编辑器

7) 将最新的hibernate3.jar(3.6.x版本)复制到“$JASPER_SOURCE/lib”位置

8) 现在从$JASPER_源位置执行以下ant命令

蚂蚁罐

您将在lib/jasperreports-4.x.x.jar位置获得修改后的jar。在你的项目中使用这个罐子

---------------或-------------------


另一个解决方案是在项目中使用旧的hibernate3.jar文件(版本3.0.x)

将现有的hibernate3.jar替换为JasperReports包中的hibernate3.jar。

可能是您的查询没有返回模板中声明的字段。我认为这是一个好的解决方案。难以置信hibernate团队无法修补此问题。=)但如果我有maven项目,解决方案是什么?