2011-11-29 18 views
0

我在Birt報告中遇到了一些問題,我似乎無法將其整理出來。對我來說,這看起來好像這可能是一個Birt限制,所以我在這裏問。如果是,我可以再去破壞我的頭在此:在級聯查詢中訪問Birt報告中的「Java對象」類型的列

  • 我有一個包含名爲類型的「元數據」的「Java對象」
  • 我有第二個數據集一列的數據集「A」 「B」是一個子查詢,它綁定到數據集「A」的「元數據」列。 B本身又有一個名爲「受影響」類型爲「Java對象」的柱子
  • 在我的第三個數據集「C」中,我綁定到數據集「B」的「受影響」列,並有一列名爲「family」的列鍵入「Java對象」

我在這裏發現特別奇怪的是,我可以看到正在調試器中正確檢索的家庭的值,但是如果我嘗試訪問它,它總是空。但是,如果我將該列的類型設置爲字符串,則會得到一個非空值。那麼有什麼理由,Birt爲什麼這樣做?

克里斯

回答

0

從過去的經驗,我認爲答案是,BIRT只能代表相對簡單的數據類型 - 基本字符,日期和數字(它似乎能夠應付的CLOB,但他們基本上是長字符串)。

由於無法表示對象字段,因此它們在報表中顯示爲NULL。如果將對象字段的數據類型設置爲字符串,則會將該對象的二進制內容顯示爲一串十六進制數字。 (至少,這是我無意中從MySQL查詢中返回對象時的經驗。)

+0

這是不正確的。如果我在級別1或級別2上輸出「Java Object」字段,則通過在對象上調用「toString」輸出它,並獲得我的對象的字符串表示形式。在3級,它根本就是空的,我不知道爲什麼。 –

+0

@Chris:正如我所說的,這是我從過去的數據庫報告對象類型的經驗 - 因爲你不是從SQL數據庫報告,我的經驗可能不是很有用。 –

0

如果Java Object正在作爲Blob存儲在數據庫中,那麼BIRT將無法直接解釋它我知道。

您使用的是oracle數據庫嗎?如果您要通過備用客戶端(而不是您的Java應用程序)進行連接,您是否能夠查詢該字段並獲取有意義的數據? (如在,它是序列化數據,還是以blob格式存儲)?

+0

我根本沒有使用數據庫......我創建了我自己的DataSource,用於查詢未安裝AMF3的遠程BlazeDS服務器。所以我的報告模型由一個POJO模型組成。 –