さて、iReport を起動して実行しました。これで HQL クエリを実行できるようになりました。オブジェクトがフェッチされ、レポート インスペクターの [フィールド] セクションに配置されます。
エンティティ オブジェクトではなく、実際のデータ値の 1 つの「レベル」のみを返すように、すべてのクエリを平坦化する必要がありますか? オブジェクトを返し、それらの toString() をレポートに表示したいのですが、そうしないと、HQL が複雑すぎて困惑してしまいます。
オブジェクトを使用できると思います。たとえば、フィールド Father がある場合、「father.getFather().getFather().getName()」を使用して、現在の行の祖父の名前を取得できます。注意すべきことの1つは、ロードタイプです。EAGER (LAZY ではない) でなければなりません。そうしないと、データが適切にロードされません。
編集: ジョシュア、必要な Java コードを textField 内に配置できます。
<textFieldExpression class="java.lang.String"><![CDATA[$P{samples}.size() < 2 ? "" : ((br.com.laboroil.report.bean.Sample) $P{samples}.get(1)).getCode()]]></textFieldExpression>