private void generatePaySummary() {
try {
Map params = new HashMap();
params = getOrganizationInfo(params);
params.put("rptsubtitle", "Payroll Date: "+date_formatter.format(tbpaydate.getDate()));
int i = cboDept.getSelectedIndex();
int deptno = 0;
if (i != -1) deptno = (Integer)deptnos.get(i);
ReportService srv = new ReportService();
List empids = srv.getEmployeesInPayroll(deptno, tbpaydate.getDate());
if (!empids.isEmpty()) {
PayslipService.setEmployees(empids);
PayslipService.setPayDate(tbpaydate.getDate());
RepGenService repsrv = new RepGenService();
JRBeanCollectionDataSource jbsrc = new JRBeanCollectionDataSource(PaySummaryFactory.getPaySummary());
repsrv.generateReport(false, "/orgpayroll/reports/jasper/payrollsummary.jasper", true, params, jbsrc);
}
else
SysUtils.messageBox("No employees in payroll on "+date_formatter.format(tbpaydate.getDate())+"!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error" + e.getMessage());
}
}
我正在尝试执行一个打开jasper报告模板的函数。
如果该函数仅处理来自数据库的1名员工,则该函数有效,但如果我使用相同的日期处理更多,则表示Hibernate无法初始化代理 - 无会话。
答案 0 :(得分:1)
这意味着你有一个带有懒惰fetchType的集合。
您可以通过将其更改为EAGER模式来解决此问题
所以转到ReportService
课程并将您的员工集合的fetchType转换为EAGER
。或者添加(fetch=fetch = FetchType.EAGER)