Передать POJO в подотчет в Jasper Reports - PullRequest
5 голосов
/ 27 декабря 2011

У меня есть Hibernate POJO с 1.an-to-one ассоциацией с другим объектом 2.one-to-many ассоциацией (коллекцией) с другим объектом

Я пытаюсь создать отчет 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 ]

5 голосов
/ 27 декабря 2011
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}})
1 голос
/ 27 февраля 2013

Установите language в Java для отчета, чтобы исправить ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...