0

我正在使用 iReport 创建一个使用 aJPQL作为 DataSource的报告

但有一件事我似乎做不到。如果我正在搜索的字段默认是 Java 已知的,我只能让查询工作,就像在这个例子中一样:

SELECT p.name FROM Person p

在这种情况下,我映射p.namejava.lang.String

<field name="name" class="java.lang.String">
    <fieldDescription><![CDATA[COLUMN_1]]></fieldDescription>
</field>

瞧,一切正常。

但如果我做这样的查询:

SELECT p FROM Person p

并映射pcom.myproject.Person,

<field name="person" class="com.myproject.Person">
    <fieldDescription><![CDATA[COLUMN_1]]></fieldDescription>
</field>

我得到一个这样的例外:

java.lang.ClassCastException:com.myproject.Person 无法转换为 [Ljava.lang.Object;

这告诉我,当我真正希望结果成为一个列表时,它不能转换Person一个数组java.lang.ObjectPerson

有什么办法可以运行第二个查询吗?我可以设置结果类型的任何地方?

我已经导出了.jar我的项目文件,并将其添加到 iReport 的classpath中,它可以工作,因为在报告中我发送了一个对象列表作为数据源,我可以很好地使用和引用我的类,但JPQL它给我带来了麻烦

有没有人这样做过?或者知道它是怎么做的吗?

4

0 回答 0