gpt4 book ai didi

java - 为什么在将 Hibernate 5.2.8 与 JasperReports 6.4.0 一起使用时出现 java.lang.NoSuchMethodError

转载 作者:行者123 更新时间:2023-11-29 06:51:49 26 4
gpt4 key购买 nike

我正在开发使用 Apache Tomcat、Spring 和 Hibernate 的网络应用程序项目。它还使用 JasperReports v.6.4.0 生成 pdf 报告。最近,Spring和Hibernate的版本更新,Spring从3.1.2升级到4.3.6,Hibernate从3.3.1升级到5.2.8。

迁移后出现的所有问题都已解决,只有一个除外。当生成带有 hql-queries 的报告时,会抛出以下异常:

java.lang.NoSuchMethodError: org.hibernate.Session.createQuery(Ljava/lang/String;)Lorg/hibernate/Query;
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.createQuery(JRHibernateQueryExecuter.java:279)
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.createDatasource(JRHibernateQueryExecuter.java:195)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1245)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:723)
at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:438)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:550)
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:396)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:90)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:456)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:863)

在升级之前,JasperReports v.6.4.0 可以与 Hibernate v.3.3.1 一起正常工作。谁能帮我避免这个问题?

最佳答案

jasper-reports v.6.4.0 is depending on hibernate v. 3.3.2.GA 中的JRHibernateQueryExecuter .

不同之处在于,在 Hibernate 5.2 中,Query 类从 org.hibernate 移到了 org.hibernate.query

那么解决方案是什么?

要使用 JRHibernateQueryExecuter,您需要在类路径中使用 hibernate v. 3.3.2,因此您要么恢复原状,要么开发自己的 JRHibernateQueryExecuterJRHibernateQueryExecuterFactory 这取决于 Hibernate 5.2.8。

source code is available 以来,开发您自己的 JRHibernateQueryExecuter 可能并不像听起来那么困难,您可能只需要调整导入。

要注册您的"new"QueryFactory,请参阅:How I can associate a query language with my executer in Jaspersoft studio?

关于java - 为什么在将 Hibernate 5.2.8 与 JasperReports 6.4.0 一起使用时出现 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45771156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com