Передать 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 для отчета, чтобы исправить заводную ошибку.

Другие вопросы по тегам