根据我的建议,DynamicJasper 最适合您的情况。您需要正确和 HQL,它将从具有正确连接的相应 POJO 中获取您在问题中描述的所有字段。
在执行此 HQL 时,您将获得列表。您必须传递给 DynamicJasper 才能为您构建报告。它将自动从 pojo 字段名称中获取列名称。
以下是相同的示例。
Session session = null;
try {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
session.beginTransaction();
List list = session.createQuery("from Employee").list();
session.getTransaction().commit();
DynamicReport dynamicReport = new ReflectiveReportBuilder(list).build();
dynamicReport.setTitle("List of Employees");
JasperPrint jasperPrint = DynamicJasperHelper.generateJasperPrint(dynamicReport, new ClassicLayoutManager(), list);
JasperViewer.viewReport(jasperPrint);
JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\TestDynamicJasper.pdf");
resp.getWriter().write("Welcome to Show Report");
resp.getWriter().flush();
resp.getWriter().close();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ColumnBuilderException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
if(session != null)
session.close();
}
希望这对您有所帮助。:)