我现在正在将一个新模块制作成一个大型网络应用程序。我在 iReport 中创建了一个带有 Hibernate Connection 的报告。所有的 Hibernate 类都是我的队友制作的,hql 查询也是。所以,我们可以说,我在设计师中只做了“视觉”部分。
在iReport中,一切都很好,就像我想要的那样。我正在使用定义会话工厂的 hibernate.cfg.xml 文件。
当我想将我的 *.jrxml 文件与 java web 应用程序集成时,我的问题就开始了。 Web 应用程序是使用 Spring 框架在 Maven 上制作的。所以我有附加文件 applicationContext.xml,其中也像 hibernate.cfg.xml 一样定义了 hibernate 会话工厂。
问题是,是否可以在 applicationContext.xml 的 bean 上使用 @autowired 使其正常工作?
@Autowired
@Qualifier("binderSessionFactory")
protected SessionFactory sessionFactory;
如果是,我如何提供此连接以便它与我的 *.jrxml 文件一起使用?
Java代码:
OutputStream outputStream = response.getOutputStream();
Map parameters = (Map) model.get("parameters");
URL reportTemplate = getClass().getClassLoader().getResource("pathToFile/file.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(reportTemplate.getPath());
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
我应该如何使休眠数据库连接对我的报告可见?
回答你第一个问题,是的,这是可能的。请参阅此链接了解 JasperReports-Hibernate 集成所需的必要配置:
JasperReports 5.6.0 - Hibernate 示例 和
在 JasperReports 中使用 Hibernate 查询
虽然最后一个链接显示了 Spring 的特定要求:JasperReports - Spring MVC
希望这些有帮助。