我的报告jrxml文件看起来像
{{1}}
但是这里我得到一个ClassCastException,
java.lang.ClassCastException: 无法强制转换org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 到net.sf.jasperreports.engine.JRDataSource
我无法弄清楚,为什么?
答案 0 :(得分:0)
来自JasperReports api JRDatasetRun
数据集运行声明提供数据集参数的值以及数据集将通过其进行迭代的数据源。如果存在与数据集关联的SQL查询,则可以选择将java.sql.Connection传递给数据集而不是JRDataSource实例。该查询由引擎使用JDBC连接执行,并且迭代所获得的java.sql.ResultSet对象。
结论在运行数据集datasetRun
时,您可以:
使用dataSourceExpression
标签传递JRDatasource
使用connectionExpression
标记传递JDBC连接
什么都不传递。
那么你在做什么错了?
您正在dataSourceExpression
标记中而不是connectionExpression
标记中传递JDBC连接,JasperReports希望它是JRDatasource并尝试将其强制转换。
如果您希望通过报告连接,则应使用connectionExpression
,如下所示。
<datasetRun subDataset="listDataset" uuid="364ec058-5b7e-43e0-9272-92907dfba7f3">
<datasetParameter name="REPORT_DATE">
<datasetParameterExpression><![CDATA[$P{REPORT_DATE}]]></datasetParameterExpression>
</datasetParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>