2009-05-06 10 views
2

Okay, ich habe iReport eingerichtet und kann jetzt HQL-Abfragen ausführen, Objekte werden zurückgeholt und in den Bereich Felder des Berichtsinspektors verschoben.iReport und Hibernate ...

Muss ich wirklich alle meine Abfragen abflachen, so dass ich nur eine "Ebene" der tatsächlichen Datenwerte und nicht meine Entitätsobjekte zurückgeben? Ich möchte lieber nur die Objekte zurückgeben und ihre ToString() auf dem Bericht angezeigt werden, oder die HQL scheint so komplex zu sein, dass es mich stopft.

Antwort

2

Ich denke, Sie könnten die Objekte verwenden. Wenn Sie beispielsweise einen Vater haben, können Sie "vater.getFather(). GetFather(). GetName()" verwenden, um den Namen des Großvaters der aktuellen Linie zu erhalten. Eine Sache, auf die Sie achten müssen, ist der Ladetyp. Es muss EAGER (nicht LAZY) sein, ansonsten werden die Daten nicht automatisch geladen.

EDIT: Joshua, können wir was Java-Code, den wir in einem Textfield möchten setzen:

<textFieldExpression class="java.lang.String"><![CDATA[$P{samples}.size() < 2 ? "" : ((br.com.laboroil.report.bean.Sample) $P{samples}.get(1)).getCode()]]></textFieldExpression> 
+0

Aber ich muss immer noch, dass getName() dort den tatsächlichen Namen bekommen, da ich nicht tun kann, getName() aus in iReport, ich muss es in der hql-Abfrage tun. Ich habe meine Daten schrecklich tief in meinen Objekten begraben ... –

+0

aber Sie können getName() tun. –