我正在使用 iReport 创建一个使用 aJPQL
作为 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中,它可以工作,因为在报告中我发送了一个对象列表作为数据源,我可以很好地使用和引用我的类,但JPQL
它给我带来了麻烦
有没有人这样做过?或者知道它是怎么做的吗?