我在 JasperRreports Server 中创建了一个域。我有一个存储二进制数据的表。当我在我的域中使用它时,我收到以下错误:
java.lang.IllegalArgumentException: getObjectType for javaType: null
返回 null
我导出了架构并发现了以下内容:
<field id="Id" type="java.lang.Integer" />
<field id="FileData" type="null" />
如您所见,在 type 字段中使用了 null。我尝试将其更改为 java.io.InputStream ,这是当我直接连接到数据源并得到相同错误时它映射到的类型:
java.lang.IllegalArgumentException: getObjectType for javaType:
java.io.InputStream 在
com.jaspersoft.commons.dataset.expr.ObjectTypeMapper.getObjectType(ObjectTypeMapper.java:69)返回 null
在我删除 Binary 列之前,使用该域的任何报告都无法运行。当我尝试在iReport中创建域报告时,它无法检索域字段。当我尝试使用临时报告工具时,出现上述错误。
我使用的是SQL Server 2005,数据的类型是“图像”。在我看来,我将该列转换为 varbinary 以查看JasperReports是否会识别它,但我仍然有同样的错误。
有没有人在JasperReports 服务器域中 成功使用过二进制数据类型?
更新: 我在 applicationContext-semanticLayer.xml 中配置了 bean“jdbcMetaConfiguration”以将二进制列映射到 java.io.InputStream,但我仍然得到同样的错误。映射工作,当我查看 XML 文件“null”被替换为“java;io.InputStream”但我仍然得到 IllegalArgumentException。