错误:Hibernate无法初始化代理 - 没有会话

时间:2017-09-27 09:56:17

标签: java hibernate

ReportService Code

 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无法初始化代理 - 无会话。

1 个答案:

答案 0 :(得分:1)

这意味着你有一个带有懒惰fetchType的集合。

  

您可以通过将其更改为EAGER模式来解决此问题

所以转到ReportService课程并将您的员工集合的fetchType转换为EAGER。或者添加(fetch=fetch = FetchType.EAGER)