Передать POJO в подотчет в Jasper Reports
У меня есть 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>
Но этот не работает. Может кто-нибудь, пожалуйста, дайте мне знать, где я иду не так?
2 ответа
Решение
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}})
Задавать language
на Java для отчета, чтобы исправить заводную ошибку.