1

我正在使用 ireport-4.5.0 生成报告。我正在使用JRBeanCollectionDatasource. 我正在向这个数据源发送对象列表。我正在使用 JPA 查询来获取结果列表。

在此查询中,如果我给SELECT m from mobile m它工作正常并生成报告,但如果我给SELECT m.title,m.gender from mobile m它则给出异常。它无法找到该属性。

怎么做才能解决这个问题?谁能告诉我如何解决这个问题?这么多天来,我在这里被打动了。对不起我的英语不好。

提前致谢。

4

1 回答 1

2

您的第二个查询返回 bean 的集合,而是返回数组 (Object[]) 的集合,它们都有两个元素:标题和性别。该数组没有属性(你不能调用它) getGendergetTitle因此是例外。

您有大量的解决方案:

  • 编写一个只有两个属性的简单 bean(例如 TitleGener):gender 和 title。它还应该有一个初始化它们的构造函数。然后将您的 JPA 查询更改为:SELECT new my.utils.TitleGender(m.title,m.gender) from mobile m。这样,您将获得一组实际上确实具有所需属性的 bean。这是最快的解决方法。

  • 根本不用JRBeanCollectionDataSource,只使用标准的 JDBC 数据源。无论如何,您似乎都不了解 JPA 的工作原理,因此您是否需要它是值得怀疑的。这是 - 在我看来 - 最好的选择。

  • 编写一个简单的、专门JRDataSource化的包装 Object[]。该接口只有两种方法并且易于实现 - 重点是将属性名称转换为其索引 int Object[],在您的情况下,转换将是硬编码的。这就是我会做的。

于 2012-11-02T13:38:42.950 回答