我正在使用iReport创建一个报告,该报告使用JPQL
作为DataSource
但有一件事我似乎无法做到。如果我正在搜索的字段默认为Java,我只能使查询生效,就像这个例子一样:
SELECT p.name FROM Person p
在这种情况下,我将p.name
映射到java.lang.String
<field name="name" class="java.lang.String">
<fieldDescription><![CDATA[COLUMN_1]]></fieldDescription>
</field>
和瞧,这一切都有效。
但如果我这样做一个查询:
SELECT p FROM Person p
并将p
映射到com.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.Object
到Person
数组
有什么方法可以运行第二个查询吗?我可以在哪里设置结果的类型?
我已经导出了我的项目的.jar
文件,并将其添加到iReport的 classpath ,它可以正常工作,因为在报告中我发送了一个对象列表作为DataSource,我可以使用和引用我的课程很好,但是JPQL
它给了我麻烦
有没有人这样做过?或者知道它是如何完成的?