Hibernate HQL - query.list()返回对象数组的对象数组

时间:2015-11-30 06:52:15

标签: java arrays hibernate

我正在编写HQL查询。根据我视图中的条件,我在SELECT子句中添加选择(选择的数量从1到大约20)。在查询hibernate上使用list()将返回对象数组的对象数组,至少我是这么认为的。如果我通过结果迭代

 Iterator<Object[]> itr = result.iterator();
            while(itr.hasNext()){
               Object[] obj = (Object[]) itr.next();
               System.out.println(obj);                        //1st
               for (int br = 0; br <= obj.length-1;br ++) {
                   System.out.print(obj[br].toString() + ","); //2nd
               }
            }

第一个Sytsem.out prints每个Object数组和第二个数组打印出他们的内容。对于测试输出到控制台是好的。

我尝试将结果用于Jasper Reports,并以某种方式无法访问每个Object数组的内容。有人可以给我建议或建议一种方法,比如将结果转换为我可以在报告中使用的格式。

1 个答案:

答案 0 :(得分:2)

JRBeanCollectionDataSource假设bean的集合 - POJO类。然后它试图通过Jasper报告的字段名称找到该类的适当字段。

因此,如果在Jasper报告中您定义了一个字段&#39; userName&#39; JRBeanCollectionDataSource获取POJO类并尝试查找类&#39;字段&#39; userName&#39;。

在你的情况下,而不是POJO类,你得到数组Object []。因此无法找到名为&#39; userName&#39;。

的字段

我建议定义DTO(数据传输对象)并将Object []转换为DTO。因此,您将拥有List,并且JRBeanCollectionDataSource可以解析正确的名称。

一种简单的方法是定义结果转换器。

.setResultTransformer( Transformers.aliasToBean(ResultsDTO.class))

另见this