メイン レポートからサブレポートにデータソースを渡したい。
したがって、iReportのConnection TypeをUse a datasource expressionに変更し、 REPORT_DATA_SOURCEパラメータを渡すだけです。
レポートは数百のサイトを生成するはずです。また、ページごとに 1 つのサブレポートを計算します。
サブレポートにはデータソースの数行しか必要ないため、クエリで独自の WHERE を使用します。
問題は:
Connection TypeをConnection から Data Sourceに変更すると、レポートには最初のサイトのみが表示されます。サブレポートは、メインレポートのデータセットをそのWHEREステートメントで 1 行だけに変更するように見えます。
そのhttp://www.billmann.de/2011/12/01/jasperreports-subreport-datasource/の解決策を見てきました が、これを試すとエラーが発生します:
java.lang.ClassCastException: net.sf.jasperreports.engine.JRResultSetDataSource を net.sf.jasperreports.engine.data.JRBeanCollectionDataSource にキャストできません
データソースをクローンする他の可能性はありますか? または、データソースが変更されないように、サブレポートで何かを設定できますか?
DataSourceの代わりにConnectionを使用すると、レポートは機能しますが、Subreport 呼び出しごとに独自のデータセットが生成されるため、5 分以上レンダリングされます。