在带有级联查询的Birt报告中访问“Java对象”类型的列

时间:2011-11-29 16:02:52

标签: birt

我在Birt报告中遇到了一些麻烦,我似乎无法解决这个问题。对我来说,这似乎可能是一个Birt限制,所以我在这里问。如果是的话,我可以停止对此表示不满:

  • 我有一个数据集“A”,其中包含一个名为“Java Object”的“元数据”列
  • 我有第二个数据集“B”,它是一个子查询,它绑定到数据集“A”的“元数据”列。 B本身再次有一个名为“受影响”的“Java对象”类型的列。
  • 在我的第三个数据集“C”中,我绑定到数据集“B”的“受影响”列,并且有一个名为“family”的列,类型为“Java Object”

我觉得这里特别奇怪的是,我可以在调试器中看到正确检索族的值,但如果我尝试访问它,它总是为空。但是,如果我将列的类型设置为String,则会得到一个非null值。那么,为什么Birt这样做呢?

克里斯

2 个答案:

答案 0 :(得分:0)

从过去的经验来看,我认为答案是BIRT只能表示相对简单的数据类型 - 本质上是字符,日期和数字(它似乎能够处理CLOB,但它们本质上是长字符串)。 / p>

由于它无法表示对象字段,因此它们在报告中显示为NULL。如果将对象字段的数据类型设置为字符串,它将以十六进制数字字符串形式显示对象的二进制内容。 (至少,这是我无意中从MySQL查询中返回对象时的经验。)

答案 1 :(得分:0)

如果Java对象在数据库中存储为blob,那么就我所知,BIRT将无法直接解释它。

您使用的是oracle数据库吗?如果您要通过备用客户端(而不是您的Java应用程序)进行连接,您是否可以查询该字段并获取有意义的数据? (如,是序列化数据,还是以blob格式存储)?