2012-11-02 47 views
1

我正在使用ireport-4.5.0生成報告。我正在使用JRBeanCollectionDatasource。對於這個數據源,我發送對象列表。我正在使用JPA查詢來獲取結果列表。使用JRBeanCollectionDataSource

在這個查詢,如果我給SELECT m from mobile m它工作正常,並生成報告,但如果我給SELECT m.title,m.gender from mobile m然後它是給予例外。它無法找到該屬性。

如何解決此問題?任何人都可以告訴我如何解決這個問題嗎?這麼多天我都在這裏受到傷害。對不起,我英文很差。

在此先感謝。

回答

2

你的第二個查詢不是返回一個bean集合,而是一個數組集合(Object []),它們都有兩個元素:標題和性別。該數組沒有屬性(您不能調用getGendergetTitle就可以了),因此也是例外。

你有解決方案繁多:

  • 寫一個簡單的bean(如TitleGener),只有具有兩個屬性:性別和標題。它也應該有一個構造函數來初始化它們。然後將您的JPA查詢更改爲:SELECT new my.utils.TitleGender(m.title,m.gender) from mobile m。這樣您將獲得實際具有所需屬性的bean集合。這是最快的解決方法。

  • 根本不需要JRBeanCollectionDataSource,只需使用標準的JDBC數據源即可。您似乎無法理解JPA是如何工作的,因此您是否需要它是值得懷疑的。這是 - 在我看來 - 是最好的選擇。

  • 寫一個簡單的,專門的JRDataSource包裝Object []。該接口只有兩種方法,並且實現起來很簡單 - 主要點將是從屬性名稱到其索引int Object []的翻譯,在您的情況下,翻譯將被硬編碼。這是我會做的。

相關問題