1

ireport-4.5.0を使用してレポートを生成しています。私はを使用してJRBeanCollectionDatasourceいます。このデータソースに、オブジェクトのリストを送信しています。結果リストを取得するためにJPAクエリを使用しています。

このクエリSELECT m from mobile mでは、指定すると正常に機能してレポートが生成されますが、指定SELECT m.title,m.gender from mobile mすると例外が発生します。属性が見つかりません。

この問題を解決するにはどうすればよいですか?誰かがこれを解決する方法を教えてもらえますか?私は何日もここで打たれました。英語が下手でごめんなさい。

前もって感謝します。

4

1 に答える 1

2

2 番目のクエリ、Bean のコレクションではなく、配列 (Object[]) のコレクションを返します。これらはすべて、タイトルと性別の 2 つの要素を持ちます。配列にはプロパティがないため (それgetGenderに対して ofgetTitleを呼び出すことはできません)、例外が発生します。

膨大な数のソリューションがあります:

  • 性別とタイトルの 2 つのプロパティのみを持つ単純な Bean (たとえば、TitleGener) を記述します。また、両方を初期化するコンストラクターも必要です。次に、JPA クエリを次のように変更しますSELECT new my.utils.TitleGender(m.title,m.gender) from mobile m。このようにして、実際に必要なプロパティを持つ Bean のコレクションを取得します。これが最も迅速な修正です。

  • JRBeanCollectionDataSource標準の JDBC データ ソースを使用するだけです。とにかくJPAの仕組みを理解していないようなので、必要かどうかは疑わしいです。これは、私の意見では、最良の選択です。

  • JRDataSourceObject[] をラップする単純で特化したものを作成します。インターフェイスには 2 つのメソッドしかなく、実装が簡単です。主なポイントは、プロパティの名前からそのインデックス int Object[] への変換です。この場合、変換はハードコーディングされます。これが私がすることです。

于 2012-11-02T13:38:42.950 に答える