我有一个Hibernate POJO
1.与另一个对象一对一的关联
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>

这很好。这是我为一对一关联定义它的方式
<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>

但这是行不通的。可以让我知道我要去哪里了吗?

最佳答案

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

是无效的Java代码。只需使用
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Collections.singleton($F{batchHeaderRecord}))

或者
new net.sf.jasperreports.engine.data.JRBeanArrayDataSource(new Object[] {$F{batchHeaderRecord}})

09-15 23:29