1

我在 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。

4

1 回答 1

0

编辑:不,它不能完成。对不起。

原始[过度乐观] 答案
Ad Hoc 编辑器无法处理图像(或其他二进制数据类型)。如果它更优雅地忽略它们会很好......但你不能在那里使用它们也就不足为奇了。

但是应该可以将字段定义为某种二进制(图像或字节数组或只是一个对象或类似的东西),然后在 iReport 中使用它。

于 2012-06-14T21:52:10.853 回答