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

标签 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 打印每个对象数组,第二个打印它们的内容。用于测试控制台的输出就可以了。

我尝试将结果用于 Jasper Reports,但不知何故无法访问每个对象数组的内容。有人可以给我建议或建议一种方法,例如将结果转换为我可以在报告中使用的格式。

最佳答案

JRBeanCollectionDataSource 假定 bean 的集合 - POJO 类。然后它尝试通过 Jasper 报告的字段名称找到该类的正确字段。

因此,如果在 Jasper Report 中定义字段“userName”,则 JRBeanCollectionDataSource 会获取 POJO 类并尝试查找该类字段“userName”。

在你的例子中,你得到的是数组 Object[],而不是 POJO 类。因此找不到名为“userName”的字段。

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

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

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

另请参阅this

关于java - Hibernate HQL - query.list() 返回对象数组的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33992956/

相关文章:

java - for循环后全局变量的值不会改变

c - 是否可以访问其自身大小的数组元素?

java - JPA - 实体未持久化

hibernate - 集群的独立/复制 Ehcache

python - 获取轴上 numpy.argmax 元素的索引

java - EhCache Hibernate 二级缓存 maxBytesLocalHeap 慢

Java大文件保存在数据库中-对象设计

java - 如何以编程方式将值编译为源文字?

java - 为什么我不能添加到 List<?在 Java 中扩展字符串>?

php - 按特定值对数组进行排序