将POJO传递给Jasper Reports中的子报告

Pra*_*nth 5 hibernate jasper-reports subreport

我有一个Hibernate POJO与1.an与一个对象的一对一关联2.与另一个对象的一对多关联(集合)

我正在尝试创建一个Jasper报告,这些关联将转到子报告.对于多对一关联,我传递的数据源如下:

<subreport>
 <reportElement x="40" y="16" width="100" height="30"/>
 <dataSourceExpression>
   <![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{phones})]]>
 </dataSourceExpression>
 <subreportExpression>
    <![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]>
 </subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)

这很好用.这是我为一对一关联定义它的方式

<subreport>
 <reportElement x="25" y="91" width="200" height="59"/>
 <dataSourceExpression>
   <![CDATA[new net.sf.jasperreports.engine.data.JRBeanArrayDataSource([$F{batchHeaderRecord}] as java.lang.Object[])]]>
 </dataSourceExpression>
 <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "batchHeaderReport.jasper"]]>
 </subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)

但是这个没有用.有人可以让我知道我哪里出错吗?

JB *_*zet 5

new net.sf.jasperreports.engine.data.JRBeanArrayDataSource([$F{batchHeaderRecord}] as java.lang.Object[])
Run Code Online (Sandbox Code Playgroud)

是无效的Java代码.只是用

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Collections.singleton($F{batchHeaderRecord}))
Run Code Online (Sandbox Code Playgroud)

要么

new net.sf.jasperreports.engine.data.JRBeanArrayDataSource(new Object[] {$F{batchHeaderRecord}})
Run Code Online (Sandbox Code Playgroud)