我有一个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}})