gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:09:11 27 4
gpt4 key购买 nike

我正在编写 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com