从在jasper报告中检索两个实体的查询中获取值

时间:2012-05-28 14:55:01

标签: java jpa jasper-reports ireport

我正在使用ireport 4.1.1和hibernate jpa,我有一个检索两个实体的查询:

select a,b from TableA a left join a.tableBList b

我试图获取a和b的值,在java中,它返回一个包含两个项目的对象数组(Object []),但是当我尝试在jasper报告上执行此操作时,它会给我这个错误:< / p>

Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : fieldName

我认为我只需要将fieldName替换为将要返回的对象的名称但是我不知道它并且我试图找到它但是我没有成功,你们中的任何人都可以帮助我???

提前致谢:)

1 个答案:

答案 0 :(得分:0)

此错误是因为您的数据未使用beans属性进行映射,或者您的数据模式不符合beans属性。我在java项目中遇到了同样的问题。我整理出你的数据应该是一个正确的二维数组形式,然后我从某个地方获取样本数据并做了这个

String[][] data =
{{ "N263Y", "T-11", " 39 ROSCOE TRNR RACER"},
{ "N4087X", "BA100-163", "BRADLEY AEROBAT"},
{ "N43JE", "HAYABUSA 1", "NAKAJIMA KI-43 IIIA"},
{ "N912S", "9973CC", "PA18-150"}};

        JTable m = new JTable(data,headers);
try {

            JasperReport jasperReport = JasperCompileManager.compileReport(fileName);

            if(jasperReport != null )
               System.out.println("so far so good ");

            // Fill the report using an empty data source

            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRTableModelDataSource(m.getModel()) );//create());//con.connection);
            try{
            JasperExportManager.exportReportToPdfFile(jasperPrint, outFileName);
            System.out.printf("File exported sucessfully");
            }catch(Exception e){
                e.printStackTrace();
            }
            JasperViewer.viewReport(jasperPrint);

        } catch (JRException e) {
            JOptionPane.showMessageDialog(null, e);
            e.printStackTrace();
            System.exit(1);
        }

注意:

您的字段名称应以小写字母开头,而且字段名称应该小于该数据中提供的列名称。

希望这会对你有所帮助。