使用 Java Bean 数据源时交叉表数据为空?

Crosstab Data is empty when using a Java Bean Data Source?

我在使用 Java Bean 数据源 的 jasper 报告中遇到问题,在交叉表中使用数据源表达式作为 $P{REPORT_CONNECTION}

我可以在详细信息部分成功填充数据,

但是当我尝试在交叉表中使用 bean 数据时;交叉表在预览时为空。

有人知道在这个特定设置上该怎么做吗?

$P{REPORT_CONNECTION} 是 JDBC 数据库连接,因为你使用的是 "Java Bean Datasource",你不应该传递数据库连接,而是 JRDatasource.

通过指定 dataSourceExpression

将数据源传递到交叉表
<crosstabDataset>
    <dataset>
        <datasetRun subDataset="Dataset1" uuid="bcc868c0-ea35-4a17-b570-2d51dbe93e8d">
            <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
        </datasetRun>
    </dataset>
</crosstabDataset>

不过,

如果您想使用当前的主报表数据源(如上),您可以简单地不指定任何数据集或连接,这将自动使用主数据源,无需定义子数据集。

但是,

您需要小心,JRDatasource 填充时是 "consumed",因此如果您已经使用过一次(jrxml 中存在详细信息带),它就会被消耗掉。要更好地理解这一点,请参见